diff --git a/Android.bp b/Android.bp
index c9a409c..a9c3ea0 100644
--- a/Android.bp
+++ b/Android.bp
@@ -46,7 +46,6 @@
 
 android_library {
     name: "Settings-core",
-    platform_apis: true,
     defaults: [
         "SettingsLib-search-defaults",
         "SettingsLintDefaults",
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 57c577d..11bf4c1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -818,6 +818,10 @@
                   android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS"
                   android:theme="@style/Theme.AlertDialog.SimConfirmDialog"/>
 
+        <activity android:name=".network.telephony.EuiccRacConnectivityDialogActivity"
+                  android:exported="false"
+                  android:theme="@style/Theme.AlertDialog.SimConfirmDialog"/>
+
         <activity
             android:name="Settings$TetherSettingsActivity"
             android:label="@string/tether_settings_title_all"
@@ -949,6 +953,39 @@
                        android:value="@string/menu_key_apps"/>
         </activity>
 
+        <activity-alias
+            android:name="BackupTasksActivity"
+            android:knownActivityEmbeddingCerts="@array/config_known_host_certs"
+            android:exported="true"
+            android:targetActivity=".spa.SpaBridgeActivity"
+            android:label="@string/run_backup_tasks_title">
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.REQUEST_RUN_BACKUP_JOBS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.spa.DESTINATION"
+                       android:value="TogglePermissionAppList/BackupTasksApps"/>
+            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+                       android:value="@string/menu_key_apps"/>
+        </activity-alias>
+
+        <activity-alias
+            android:name="AppBackupTasksActivity"
+            android:knownActivityEmbeddingCerts="@array/config_known_host_certs"
+            android:exported="true"
+            android:targetActivity=".spa.SpaAppBridgeActivity"
+            android:label="@string/run_backup_tasks_title">
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.REQUEST_RUN_BACKUP_JOBS" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="package" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.spa.DESTINATION"
+                       android:value="TogglePermissionAppInfoPage/BackupTasksApps"/>
+            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+                       android:value="@string/menu_key_apps"/>
+        </activity-alias>
+
         <activity
             android:name="Settings$DateTimeSettingsActivity"
             android:label="@string/date_and_time"
diff --git a/aconfig/settings_biometrics_framework_flag_declarations.aconfig b/aconfig/settings_biometrics_framework_flag_declarations.aconfig
index e9f19bc..4355ed1 100644
--- a/aconfig/settings_biometrics_framework_flag_declarations.aconfig
+++ b/aconfig/settings_biometrics_framework_flag_declarations.aconfig
@@ -7,3 +7,10 @@
   description: "This flag enables or disables the BiometricSettingsProvider"
   bug: "303595205"
 }
+
+flag {
+  name: "fingerprint_v2_enrollment"
+  namespace: "biometrics_framework"
+  description: "This flag enables or disables the Fingerprint v2 enrollment"
+  bug: "295206723"
+}
diff --git a/aconfig/settings_connecteddevice_flag_declarations.aconfig b/aconfig/settings_connecteddevice_flag_declarations.aconfig
index 84bb578..49dd4b4 100644
--- a/aconfig/settings_connecteddevice_flag_declarations.aconfig
+++ b/aconfig/settings_connecteddevice_flag_declarations.aconfig
@@ -9,20 +9,6 @@
 }
 
 flag {
-  name: "enable_le_audio_sharing"
-  namespace: "pixel_cross_device_control"
-  description: "Gates whether to enable LE audio sharing"
-  bug: "305620450"
-}
-
-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: "308368124"
-}
-
-flag {
   name: "enable_auth_challenge_for_usb_preferences"
   namespace: "safety_center"
   description: "Gates whether to require an auth challenge for changing USB preferences"
@@ -35,10 +21,3 @@
   description: "Order the saved bluetooth devices by most recently connected."
   bug: "306160434"
 }
-
-flag {
-  name: "enable_hide_exclusively_managed_bluetooth_device"
-  namespace: "dck_framework"
-  description: "Hide exclusively managed Bluetooth devices in BT settings menu."
-  bug: "322285078"
-}
\ No newline at end of file
diff --git a/aconfig/settings_perform_backup_tasks_flag_declarations.aconfig b/aconfig/settings_perform_backup_tasks_flag_declarations.aconfig
new file mode 100644
index 0000000..d060e24
--- /dev/null
+++ b/aconfig/settings_perform_backup_tasks_flag_declarations.aconfig
@@ -0,0 +1,9 @@
+package: "com.android.settings.flags"
+container: "system"
+
+flag {
+  name: "enable_perform_backup_tasks_in_settings"
+  namespace: "backstage_power"
+  description: "Enable the Perform Backup Tasks screen in Settings"
+  bug: "320563660"
+}
\ No newline at end of file
diff --git a/res-product/values-my/strings.xml b/res-product/values-my/strings.xml
index 0716e6e..7011418 100644
--- a/res-product/values-my/strings.xml
+++ b/res-product/values-my/strings.xml
@@ -52,7 +52,7 @@
     <string name="security_settings_face_enroll_introduction_message" product="default" msgid="847716059867943459">"သင့်ဖုန်းကိုလော့ခ်ဖွင့်ရန်၊ ဝယ်ယူမှုများကို အတည်ပြုရန် သို့မဟုတ် အက်ပ်များသို့ လက်မှတ်ထိုးဝင်ရန် သင့်မျက်နှာကို အသုံးပြုပါ။"</string>
     <string name="security_settings_face_enroll_introduction_message" product="tablet" msgid="3976493376026067375">"သင့်တက်ဘလက်ဖွင့်ရန်၊ ဝယ်ယူမှုများအတည်ပြုရန် (သို့) အက်ပ်များတွင် လက်မှတ်ထိုးဝင်ရန် သင့်မျက်နှာကို အသုံးပြုနိုင်သည်။"</string>
     <string name="security_settings_face_enroll_introduction_message" product="device" msgid="6432265830098806034">"သင့်စက်ပစ္စည်းဖွင့်ရန်၊ ဝယ်ယူမှုများအတည်ပြုရန် (သို့) အက်ပ်များတွင် လက်မှတ်ထိုးဝင်ရန် သင့်မျက်နှာကို အသုံးပြုနိုင်သည်။"</string>
-    <string name="security_settings_face_enroll_introduction_message_class3" product="default" msgid="6769683806920355534">"အက်ပ်များသို့ လက်မှတ်ထိုးဝင်ချိန် (သို့) ဝယ်ယူမှုအတည်ပြုချိန်များတွင် သင့်ဖုန်းကိုဖွင့်ရန် (သို့) အက်ပ်များရှိ အထောက်အထားစိစစ်ခြင်းအတွက် သင့်မျက်နှာကို သုံးနိုင်သည်။"</string>
+    <string name="security_settings_face_enroll_introduction_message_class3" product="default" msgid="6769683806920355534">"အက်ပ်များသို့ လက်မှတ်ထိုးဝင်ချိန် (သို့) ဝယ်ယူမှုအတည်ပြုချိန်များတွင် သင့်ဖုန်းကိုဖွင့်ရန် (သို့) အက်ပ်များရှိ အထောက်အထားစိစစ်ရန်အတွက် သင့်မျက်နှာကို သုံးနိုင်သည်။"</string>
     <string name="security_settings_face_enroll_introduction_message_class3" product="tablet" msgid="5417577899153380426">"အက်ပ်များသို့ လက်မှတ်ထိုးဝင်ချိန် (သို့) ဝယ်ယူမှုအတည်ပြုချိန်များတွင် သင့်တက်ဘလက်ကိုဖွင့်ရန် (သို့) အက်ပ်များရှိ အထောက်အထားစိစစ်ခြင်းအတွက် သင့်မျက်နှာကို သုံးနိုင်သည်။"</string>
     <string name="security_settings_face_enroll_introduction_message_class3" product="device" msgid="3308243169735270987">"အက်ပ်များသို့ လက်မှတ်ထိုးဝင်ချိန် (သို့) ဝယ်ယူမှုအတည်ပြုချိန်များတွင် သင့်စက်ပစ္စည်းကိုဖွင့်ရန် (သို့) အက်ပ်များရှိ အထောက်အထားစိစစ်ခြင်းအတွက် သင့်မျက်နှာကို သုံးနိုင်သည်။"</string>
     <string name="security_settings_face_enroll_introduction_consent_message_0" product="default" msgid="9086377203303858619">"သင့်ကလေးက သူ့ဖုန်းကို လော့ခ်ဖွင့်ရန်အတွက် သူ၏မျက်နှာကို သုံးခွင့်ပြုပါ"</string>
diff --git a/res-product/values-zh-rTW/strings.xml b/res-product/values-zh-rTW/strings.xml
index de2ee3d..05401e4 100644
--- a/res-product/values-zh-rTW/strings.xml
+++ b/res-product/values-zh-rTW/strings.xml
@@ -296,9 +296,9 @@
     <string name="battery_tip_dialog_summary_message" product="tablet" msgid="236339248261391160">"你的應用程式目前耗用的電力正常。如果應用程式耗用過多電力，你的平板電腦會為你提供操作建議。\n\n如果電池電量偏低，你隨時可以開啟省電模式。"</string>
     <string name="battery_tip_dialog_summary_message" product="device" msgid="7885502661524685786">"你的應用程式目前耗用的電力正常。如果應用程式耗用過多電力，裝置會提供相關操作建議。\n\n如果電池電量偏低，你隨時可以開啟省電模式。"</string>
     <string name="smart_battery_summary" product="default" msgid="1210637215867635435">"針對不常使用的應用程式限制電池用量"</string>
-    <string name="battery_usage_screen_footer" product="default" msgid="8872101342490341865">"手機充電時，系統不會估算電池用量和裝置使用時間"</string>
-    <string name="battery_usage_screen_footer" product="tablet" msgid="1876984641036532124">"平板電腦充電時，系統不會估算電池用量和裝置使用時間"</string>
-    <string name="battery_usage_screen_footer" product="device" msgid="6488857833906266507">"裝置充電時，系統不會估算電池用量和裝置使用時間"</string>
+    <string name="battery_usage_screen_footer" product="default" msgid="8872101342490341865">"手機充電時，系統不會估算電池用量和螢幕時間"</string>
+    <string name="battery_usage_screen_footer" product="tablet" msgid="1876984641036532124">"平板電腦充電時，系統不會估算電池用量和螢幕時間"</string>
+    <string name="battery_usage_screen_footer" product="device" msgid="6488857833906266507">"裝置充電時，系統不會估算電池用量和螢幕時間"</string>
     <string name="credentials_install_summary" product="nosdcard" msgid="8585932964626513863">"從裝置的儲存空間安裝憑證"</string>
     <string name="credentials_install_summary" product="default" msgid="879796378361350092">"從 SD 卡安裝憑證"</string>
     <string name="really_remove_account_message" product="tablet" msgid="5134483498496943623">"移除帳戶後，平板電腦上所有的訊息、聯絡人和其他資料將全部遭到刪除！"</string>
diff --git a/res/drawable/audio_sharing_guidance.png b/res/drawable/audio_sharing_guidance.png
deleted file mode 100644
index c0ab637..0000000
--- a/res/drawable/audio_sharing_guidance.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/audio_sharing_rounded_bg.xml b/res/drawable/audio_sharing_rounded_bg.xml
deleted file mode 100644
index db1e1bb..0000000
--- a/res/drawable/audio_sharing_rounded_bg.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <solid android:color="?android:colorButtonNormal" />
-    <corners android:radius="12dp" />
-</shape>
\ No newline at end of file
diff --git a/res/drawable/audio_sharing_rounded_bg_ripple.xml b/res/drawable/audio_sharing_rounded_bg_ripple.xml
deleted file mode 100644
index 18696c6..0000000
--- a/res/drawable/audio_sharing_rounded_bg_ripple.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight">
-    <item android:drawable="@drawable/audio_sharing_rounded_bg"/>
-</ripple>
\ No newline at end of file
diff --git a/res/drawable/ic_audio_calls_and_alarms.xml b/res/drawable/ic_audio_calls_and_alarms.xml
deleted file mode 100644
index 5da27c6..0000000
--- a/res/drawable/ic_audio_calls_and_alarms.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-  Copyright (C) 2018 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="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
-    android:tint="?android:attr/colorControlNormal">
-    <path
-        android:pathData="M3,15V9H7L12,4V20L7,15H3ZM10,15.17V8.83L7.83,11H5V13H7.83L10,15.17Z"
-        android:fillType="evenOdd"
-        android:fillColor="?android:attr/colorPrimary"/>
-    <path
-        android:pathData="M16.5,12C16.5,10.23 15.48,8.71 14,7.97V16.02C15.48,15.29 16.5,13.77 16.5,12Z"
-        android:fillColor="?android:attr/colorPrimary"/>
-    <path
-        android:pathData="M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.85 14,18.71V20.77C18.01,19.86 21,16.28 21,12C21,7.72 18.01,4.14 14,3.23Z"
-        android:fillColor="?android:attr/colorPrimary"/>
-</vector>
diff --git a/res/drawable/ic_audio_play_sample.xml b/res/drawable/ic_audio_play_sample.xml
deleted file mode 100644
index 3666c22..0000000
--- a/res/drawable/ic_audio_play_sample.xml
+++ /dev/null
@@ -1,32 +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="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?android:attr/colorControlNormal">
-  <path
-      android:pathData="M14,8C9.6,8 6,11.6 6,16H8C8,12.7 10.7,10 14,10V8Z"
-      android:fillColor="#4E4639"/>
-  <path
-      android:pathData="M14,6V4C7.4,4 2,9.4 2,16H4C4,10.5 8.5,6 14,6Z"
-      android:fillColor="#4E4639"/>
-  <path
-      android:pathData="M16,4V12.6C15.4,12.3 14.7,12 14,12C11.8,12 10,13.8 10,16C10,18.2 11.8,20 14,20C16.2,20 18,18.2 18,16V7H22V4H16ZM14,18C12.9,18 12,17.1 12,16C12,14.9 12.9,14 14,14C15.1,14 16,14.9 16,16C16,17.1 15.1,18 14,18Z"
-      android:fillColor="#4E4639"/>
-</vector>
diff --git a/res/layout/audio_sharing_device_item.xml b/res/layout/audio_sharing_device_item.xml
deleted file mode 100644
index 04ecdd7..0000000
--- a/res/layout/audio_sharing_device_item.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    <Button
-        android:id="@+id/device_button"
-        style="@style/SettingsLibActionButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="4dp"
-        android:background="@drawable/audio_sharing_rounded_bg_ripple"
-        android:textAlignment="center" />
-
-</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/dialog_audio_sharing.xml b/res/layout/dialog_audio_sharing.xml
deleted file mode 100644
index aace5ab..0000000
--- a/res/layout/dialog_audio_sharing.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:paddingHorizontal="?android:dialogPreferredPadding"
-    android:paddingBottom="?android:dialogPreferredPadding">
-
-    <TextView
-        android:id="@+id/share_audio_subtitle1"
-        style="@style/DeviceAudioSharingText"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:paddingBottom="14dp"
-        android:textFontWeight="500"
-        android:visibility="gone" />
-
-    <TextView
-        android:id="@+id/share_audio_subtitle2"
-        style="@style/DeviceAudioSharingText"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:paddingBottom="24dp"
-        android:textFontWeight="400" />
-
-    <ImageView
-        android:id="@+id/share_audio_guidance"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:src="@drawable/audio_sharing_guidance"
-        android:visibility="gone" />
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/btn_list"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:nestedScrollingEnabled="false"
-        android:overScrollMode="never"
-        android:visibility="gone" />
-
-    <Button
-        android:id="@+id/share_btn"
-        style="@style/SettingsLibActionButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_marginTop="4dp"
-        android:background="@drawable/audio_sharing_rounded_bg_ripple"
-        android:visibility="gone" />
-
-    <Button
-        android:id="@+id/cancel_btn"
-        style="@style/SettingsLibActionButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_marginTop="4dp"
-        android:background="@drawable/audio_sharing_rounded_bg_ripple"
-        android:text="Not now"
-        android:visibility="gone" />
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/dialog_audio_sharing_disconnect.xml b/res/layout/dialog_audio_sharing_disconnect.xml
deleted file mode 100644
index 592b41b..0000000
--- a/res/layout/dialog_audio_sharing_disconnect.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:paddingHorizontal="?android:dialogPreferredPadding"
-    android:paddingBottom="?android:dialogPreferredPadding">
-
-    <TextView
-        android:id="@+id/share_audio_disconnect_description"
-        style="@style/DeviceAudioSharingText"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:paddingBottom="24dp" />
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/device_btn_list"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:nestedScrollingEnabled="false"
-        android:overScrollMode="never" />
-
-    <Button
-        android:id="@+id/cancel_btn"
-        style="@style/SettingsLibActionButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_marginTop="4dp"
-        android:background="@drawable/audio_sharing_rounded_bg_ripple"
-        android:text="@string/cancel" />
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/dialog_audio_sharing_join.xml b/res/layout/dialog_audio_sharing_join.xml
deleted file mode 100644
index bfd4c77..0000000
--- a/res/layout/dialog_audio_sharing_join.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:paddingHorizontal="?android:dialogPreferredPadding"
-    android:paddingBottom="?android:dialogPreferredPadding">
-
-    <TextView
-        android:id="@+id/share_audio_subtitle"
-        style="@style/DeviceAudioSharingText"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:paddingBottom="24dp"
-        android:textFontWeight="400" />
-
-    <Button
-        android:id="@+id/share_btn"
-        style="@style/SettingsLibActionButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_marginTop="4dp"
-        android:background="@drawable/audio_sharing_rounded_bg_ripple" />
-
-    <Button
-        android:id="@+id/cancel_btn"
-        style="@style/SettingsLibActionButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_marginTop="4dp"
-        android:background="@drawable/audio_sharing_rounded_bg_ripple"
-        android:text="Not now" />
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/dialog_custom_title_audio_sharing.xml b/res/layout/dialog_custom_title_audio_sharing.xml
deleted file mode 100644
index 0513c4b..0000000
--- a/res/layout/dialog_custom_title_audio_sharing.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:padding="?android:dialogPreferredPadding">
-
-    <ImageView
-        android:id="@+id/title_icon"
-        android:layout_width="32dp"
-        android:layout_height="32dp"
-        android:layout_gravity="center"
-        android:tint="?android:attr/colorControlNormal" />
-
-    <TextView
-        android:id="@+id/title_text"
-        style="?android:attr/windowTitleStyle"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:maxLines="2"
-        android:paddingTop="14dp"
-        android:textAlignment="center"
-        android:textSize="24sp" />
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/private_space_education_screen.xml b/res/layout/private_space_education_screen.xml
index 0f57e1e..377c923 100644
--- a/res/layout/private_space_education_screen.xml
+++ b/res/layout/private_space_education_screen.xml
@@ -43,28 +43,28 @@
             android:src="@drawable/private_space_illustration"/>
         <TextView
             style="@style/PrivateSpaceSetupSubHeaderStyle"
-            android:text="@string/private_space_how_title"/>
+            android:text="@string/private_space_setup_sub_header"/>
         <RelativeLayout
             style="@style/PrivateSpaceSetupBulletPointLayoutStyle">
             <ImageView
                 android:id="@+id/lockIcon"
                 style="@style/PrivateSpaceBulletPointIconStyle"
-                android:src="@drawable/ic_lock_closed" />
+                android:src="@drawable/counter_1_24dp" />
             <TextView
                 style="@style/PrivateSpaceBulletPointTextFontStyle"
                 android:layout_toRightOf="@+id/lockIcon"
-                android:text="@string/private_space_protected_lock_text"/>
+                android:text="@string/private_space_separate_account_text"/>
         </RelativeLayout>
         <RelativeLayout
             style="@style/PrivateSpaceSetupBulletPointLayoutStyle">
             <ImageView
                 android:id="@+id/bellIcon"
                 style="@style/PrivateSpaceBulletPointIconStyle"
-                android:src="@drawable/ic_notifications" />
+                android:src="@drawable/counter_2_24dp" />
             <TextView
                 style="@style/PrivateSpaceBulletPointTextFontStyle"
                 android:layout_toRightOf="@+id/bellIcon"
-                android:text="@string/private_space_hidden_notifications_text"/>
+                android:text="@string/private_space_protected_lock_text"/>
         </RelativeLayout>
         <RelativeLayout
             style="@style/PrivateSpaceSetupBulletPointLayoutStyle"
@@ -73,11 +73,11 @@
             <ImageView
                 android:id="@+id/appsIcon"
                 style="@style/PrivateSpaceBulletPointIconStyle"
-                android:src="@drawable/ic_apps" />
+                android:src="@drawable/counter_3_24dp" />
             <TextView
                 style="@style/PrivateSpaceBulletPointTextFontStyle"
                 android:layout_toRightOf="@+id/appsIcon"
-                android:text="@string/private_space_access_bottom_text"/>
+                android:text="@string/private_space_install_apps_text"/>
         </RelativeLayout>
         <Space
             android:layout_width="wrap_content"
diff --git a/res/layout/search_bar_two_pane_version.xml b/res/layout/search_bar_two_pane_version.xml
index f98985c..337294e 100644
--- a/res/layout/search_bar_two_pane_version.xml
+++ b/res/layout/search_bar_two_pane_version.xml
@@ -29,6 +29,9 @@
         android:paddingStart="@dimen/search_bar_padding_start_two_pane"
         android:paddingEnd="@dimen/search_bar_padding_end_two_pane"
         android:background="@drawable/search_bar_selected_background"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:nextFocusForward="@+id/homepage_container"
         android:contentInsetStartWithNavigation="@dimen/search_bar_content_inset"
         android:navigationIcon="@drawable/ic_homepage_search">
         <TextView
@@ -40,4 +43,4 @@
             android:layout_gravity="start"
             android:text="@string/search_settings"/>
     </Toolbar>
-</com.google.android.material.card.MaterialCardView>
\ No newline at end of file
+</com.google.android.material.card.MaterialCardView>
diff --git a/res/layout/sim_warning_dialog_wifi_connectivity.xml b/res/layout/sim_warning_dialog_wifi_connectivity.xml
new file mode 100644
index 0000000..c6cdbc7
--- /dev/null
+++ b/res/layout/sim_warning_dialog_wifi_connectivity.xml
@@ -0,0 +1,52 @@
+<?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.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+        <ImageView
+            android:src="@drawable/ic_warning_24dp"
+            android:contentDescription="@null"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="16dp"
+            android:gravity="center"
+            android:tint="?android:attr/textColorSecondary"/>
+
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingEnd="24dp"
+            android:paddingTop="16dp"
+            android:paddingLeft="24dp"
+            android:gravity="center"
+            style="?android:attr/textAppearanceLarge"/>
+
+        <TextView
+            android:id="@+id/msg"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingEnd="24dp"
+            android:paddingTop="16dp"
+            android:paddingStart="24dp"
+            android:paddingBottom="32dp"
+            android:gravity="center"
+            android:textAppearance="@style/TextAppearance.DialogMessage"
+            android:visibility="gone"/>
+</LinearLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index e2c0a52..262803d 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Maniere om te ontsluit"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Dieselfde as toestelskermslot"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Wil jy ’n nuwe slot vir privaat ruimte kies?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Sluit outomaties"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Sluit privaat ruimte outomaties"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Sluit privaat ruimte outomaties"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Jy kan jou privaat ruimte outomaties sluit as jy jou toestel vir \'n tydperk nie gebruik het nie"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Elke keer as die toestel sluit"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Ná 5 minute se onaktiwiteit"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Patroon"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Wagwoord"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Verwyder alle soorte toestelontsluitings"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Verwyder profielbeskerming?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"\'n Patroon beskerm jou foon as dit verlore raak of gesteel word"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"\'n Patroon beskerm jou foon as dit verlore raak of gesteel word.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Dit vee ook die vingerafdrukmodel uit wat op jou toestel geberg is. Jou gesigmodel sal ook permanent en veilig uitgevee word. Jy sal nie jou gesig of vingerafdruk vir stawing in programme kan gebruik nie."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"\'n PIN beskerm jou foon as dit verlore raak of gesteel word"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Jy sal gestoorde data soos jou PIN verloor.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kaarte wat opgestel is vir kontaklose betaling sal verwyder word.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Beursies en ander apps wat toestelontsluiting benodig sal dalk nie behoorlik werk nie."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"\'n PIN beskerm jou foon as dit verlore raak of gesteel word.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Dit vee ook die vingerafdrukmodel uit wat op jou toestel geberg is. Jy sal nie jou vingerafdruk vir stawing in programme kan gebruik nie."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Jy sal gestoorde data soos jou PIN en vingerafdrukmodel verloor.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kaarte wat opgestel is vir kontaklose betaling sal verwyder word.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Beursies en ander apps wat toestelontsluiting benodig sal dalk nie behoorlik werk nie."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"\'n PIN beskerm jou foon as dit verlore raak of gesteel word.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Jou gesigmodel sal ook permanent en veilig uitgevee word. Jy sal nie jou gesig vir stawing in programme kan gebruik nie."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Jy sal gestoorde data soos jou PIN en gesigmodel verloor.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kaarte wat opgestel is vir kontaklose betaling sal verwyder word.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Beursies en ander apps wat toestelontsluiting benodig sal dalk nie behoorlik werk nie."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"\'n PIN beskerm jou foon as dit verlore raak of gesteel word.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Dit vee ook die vingerafdrukmodel uit wat op jou toestel geberg is. Jou gesigmodel sal ook permanent en veilig uitgevee word. Jy sal nie jou gesig of vingerafdruk vir stawing in programme kan gebruik nie."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Jy sal gestoorde data soos jou PIN, gesig- en vingerafdrukmodelle verloor.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kaarte wat opgestel is vir kontaklose betaling sal verwyder word.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Beursies en ander apps wat toestelontsluiting benodig sal dalk nie behoorlik werk nie."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"\'n Wagwoord beskerm jou foon as dit verlore raak of gesteel word"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"\'n Wagwoord beskerm jou foon as dit verlore raak of gesteel word.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tik op die raakpaneel se hoek onder regs vir meer opsies"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Wyserspoed"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Leer raakpaneelgebare"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Gaan na tuisskerm"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Swiep op met drie vingers enige plek op jou raakpaneel"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Gaan terug"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Hierdie program sal batterykrag op die agtergrond kan gebruik. Jou battery sal dalk gouer as verwag afloop."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Verwyder"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Kanselleer"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Laai tot vol"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Gaan die laaibykomstigheid na"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Kom meer te wete oor onversoenbare laaiproses"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Batterybestuurder"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"outo, vul, outovul, data, toegangsleutel, wagwoord"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Verander"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Maak oop"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Niks is gekies nie"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Maak seker dat jy hierdie program vertrou&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Outovul&gt;%1$s&lt;/xliff:g&gt; gebruik wat op jou skerm is om te bepaal wat outomaties ingevul kan word."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Gebruik &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nuwe wagwoorde, toegangsleutels en ander inligting sal van nou af hier gestoor word. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan dalk gebruik wat op jou skerm is om te bepaal wat outomaties ingevul kan word."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Voorkeurdiens vir wagwoorde, toegangsleutels en outovul"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Skakel alle dienste af?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Wagwoorde, toegangsleutels en ander gestoorde inligting sal nie vir outovul beskikbaar wees wanneer jy aanmeld nie"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Verander jou voorkeurdiens na &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nuwe wagwoorde, toegangsleutels en ander inligting sal van nou af hier gestoor word. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan dalk gebruik wat op jou skerm is om te bepaal wat outomaties ingevul kan word"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Gebruik %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Skakel af"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Verander"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Jy kan net 5 dienste aan hê"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Skakel ten minste 1 diens af om nog een by te voeg"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s gebruik wat op jou skerm is om te bepaal wat outomaties ingevul kan word."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Versteek speler"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Wys speler"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Laat kamerasagteware-uitbreidings toe"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Aktiveer die versteksagteware-implementering van gevorderde kamera-eienskappe soos videografie vir swaksiendes."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth sal aanskakel"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM\'s"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index de247b6..00d357d 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"የሚከፈትባቸው መንገዶች"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ከመሣሪያ ማያ ገጽ መቆለፊያ ጋር ተመሳሳይ"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ለግል ቦታ አዲስ ቁልፍ ይመርጣሉ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"በራስ-ሰር ቆልፍ"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"የግል ቦታን በራስ-ሰር ቆልፍ"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"የግል ቦታን በራስ-ሰር ቆልፍ"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"መሣሪያዎን ለተወሰነ ጊዜ ካልተጠቀሙበት የግል ቦታዎን በራስ-ሰር መቆለፍ ይችላሉ"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"መሣሪያ በተቆለፈ ቁጥር"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"ከ5 ደቂቃዎች እንቅስቃሴ-አልባነት በኋላ"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"ለተጨማሪ አማራጮች የመዳሰሻ ሰሌዳውን የታችኛው ቀኝ ጠርዝ መታ ያድርጉ"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"የጠቋሚ ፍጥነት"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"የመዳሰሻ ሰሌዳ ምልክቶችን ይወቁ"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ወደ መነሻ ይሂዱ"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"በመዳሰሻ ሰሌዳዎ ማንኛውም ቦታ ላይ በሦስት ጣቶች ወደ ላይ ያንሸራትቱ"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ይመለሱ"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ይህ መተግበሪያ በበስተጀርባ ባትሪን መጠቀም ይችላል። ባትሪዎ ከተጠበቀው ጊዜ ቀድሞ ሊያልቅ ይችላል።"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"አስወግድ"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"ይቅር"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"እስኪሞላ ኃይል ሙላ"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"የኃይል መሙላት መለዋወጫን ይፈትሹ"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"ስለ ተኳዃኝ ያልሆነ ኃይል መሙላት የበለጠ ይወቁ"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"የባትሪ አስተዳዳሪ"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ራስ ሰር፣ ሙላ፣ ውሂብ፣ የይለፍ ቁልፍ፣ የይለፍ ቃል"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"ለውጥ"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"ክፈት"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"ምንም አልተመረጠም"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ይህን መተግበሪያ የሚያምኑት መሆንዎን ያረጋግጡ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google ራስ-ሙላ&gt;%1$s&lt;/xliff:g&gt; ምን በራስ መሞላት እንደሚችል ለማወቅ በማያ ገጽዎ ላይ ያለውን ነገር ይጠቀማል።"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; አዳዲስ የይለፍ ቃሎች፣ የይለፍ ቁልፎች እና ሌላ መረጃ ከአሁን በኋላ እዚህ ይቀመጣሉ። &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ምን በራስ-ሙላ ሊሆን እንደሚችል ለማወቅ በማያ ገፅዎ ላይ ያለውን ነገር ይጠቀማል።"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"ለይለፍ ቃላት፣ የይለፍ ቁልፎች እና &amp; ራስ-ሙላ ተመራጭ አገልግሎት"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;ሁሉም አገልግሎቶች ይጥፉ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ሲገቡ የይለፍ ቃሎች፣ የይለፍ ቁልፎች እና ሌላ የተቀመጡ መረጃዎች ለራስ-ሙላ አይገኙም"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;የመረጡትን አገልግሎት ወደዚህ ይለውጡ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; አዲስ የይለፍ ቃሎች፣ የይለፍ ቁልፎች እና ሌሎች መረጃዎች ከአሁን በኋላ እዚህ ይቀመጣሉ። &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ምን በራስ-ሙላ ሊሆን እንደሚችል ለማወቅ በማያ ገፅዎ ላይ ያለውን ነገር ይጠቀማል።"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s ጥቅም ላይ ይዋል?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"አጥፋ"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"ለውጥ"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"5 የበሩ አገልግሎቶች ብቻ ሊኖሩዎት ይችላል"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"ሌላ ለማከል ቢያንስ 1 አገልግሎት ያጥፉ"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ምን በራስ-ሰር እንደሚሞላ ለመወሰን በማያ ገጽዎ ላይ ያለውን ይጠቀማል።"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 7e284d8..e8a1f8b 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"طُرق فتح القفل"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"نفس قفل شاشة الجهاز"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"هل تريد اختيار طريقة جديدة لقفل المساحة الخاصة؟"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"القفل التلقائي"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"قفل المساحة الخاصة تلقائيًا"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"قفل المساحة الخاصة تلقائيًا"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"يمكنك قفل مساحتك الخاصة تلقائيًا إذا لم تستخدم جهازك لفترة زمنية."</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"في كل مرة يتم فيها قفل الجهاز"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"بعد توقّف النشاط لمدة 5 دقائق"</string>
@@ -1768,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"تعذّرت عملية الأرشفة"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"تمت أرشفة \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\""</string>
     <string name="restoring_failed" msgid="3390531747355943533">"تعذَّرت استعادة التطبيق."</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"جارٍ استعادة <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"جارٍ استعادة تطبيق \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\""</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"هناك عملية نقل أخرى قيد التقدم حاليًا."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"ليست هناك مساحة تخزين كافية."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"التطبيق غير موجود."</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"انقر أسفل يسار لوحة اللمس للحصول على مزيد من الخيارات."</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"سرعة المؤشر"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"التعرّف على إيماءات لوحة اللمس"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"الانتقال إلى الشاشة الرئيسية"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"مرّر سريعًا للأعلى باستخدام 3 أصابع بأي مكان على لوحة اللمس."</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"الرجوع"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"سيتمكّن هذا التطبيق من استخدام البطارية في الخلفية، وقد يؤدي ذلك إلى نفاد شحنها قبل الوقت المتوقع."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"إزالة"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"إلغاء"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"شحن الجهاز تمامًا"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"فحص ملحق الشحن"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"مزيد من المعلومات عن الشحن بمحوِّل طاقة غير متوافق"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"مدير البطارية"</string>
@@ -3843,7 +3847,7 @@
     <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"السماح للتطبيق المساعد بالوصول إلى صورة للشاشة"</string>
     <string name="assist_flash_title" msgid="5449512572885550108">"إظهار وميض على الشاشة"</string>
     <string name="assist_flash_summary" msgid="3032289860177784594">"إظهار وميض على حدود الشاشة عند وصول التطبيق المساعد إلى النص من الشاشة أو لقطة الشاشة"</string>
-    <string name="assist_footer" msgid="8248015363806299068">"بإمكان التطبيقات المساعِدة مساعدتك استنادًا إلى المعلومات على الشاشة التي تشاهدها. وتتوافق بعض التطبيقات مع كل من خدمة المشغّل وخدمة الإدخال الصوتي لتوفير مساعدة متكاملة لك."</string>
+    <string name="assist_footer" msgid="8248015363806299068">"بإمكان التطبيقات المساعِدة مساعدك استنادًا إلى المعلومات التي تظهر على شاشتك. وتعمل بعض التطبيقات مع كل من خدمة المشغّل وخدمة الإدخال الصوتي لتوفير مساعدة متكاملة لك."</string>
     <string name="average_memory_use" msgid="717313706368825388">"متوسط ​​استخدام الذاكرة"</string>
     <string name="maximum_memory_use" msgid="2171779724001152933">"الاستخدام الأقصى للذاكرة"</string>
     <string name="memory_usage" msgid="5594133403819880617">"استخدام الذاكرة"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"تلقائي، ملء، ملء تلقائي، بيانات، مفتاح مرور، كلمة مرور"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"تغيير"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"فتح"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"لم يتم اختيار أي عنصر"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"‏&lt;b&gt;تأكّد من أنك تثق بهذا التطبيق&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; تستخدم البيانات المعروضة على الشاشة لتحديد ما يمكن ملؤه تلقائيًا."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"‏&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; سيتم حفظ مفاتيح المرور وكلمات المرور الجديدة والمعلومات الأخرى هنا من الآن فصاعدًا. قد يستخدم تطبيق &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; المحتوى الذي يظهر على شاشتك لتحديد ما يمكن ملؤه تلقائيًا."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"الخدمة المفضّلة لكلمات المرور ومفاتيح المرور وميزة \"الملء التلقائي\""</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"‏&lt;b&gt;هل تريد إيقاف جميع الخدمات؟&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; لن يتوفَّر الملء التلقائي لكلمات المرور ومفاتيح المرور وغيرها من المعلومات المحفوظة عند تسجيل الدخول."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"‏&lt;b&gt;يجب تغيير الخدمة المفضّلة إلى &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; سيتم حفظ مفاتيح المرور وكلمات المرور الجديدة والمعلومات الأخرى هنا من الآن فصاعدًا. وقد يستخدم تطبيق &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; المحتوى الذي يظهر على شاشتك لتحديد ما يمكن ملؤه تلقائيًا."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"‏هل تريد استخدام %1$s؟"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"إيقاف"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"تغيير"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"لا يمكن اختيار أكثر من 5 خدمات"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"يجب إيقاف خدمة واحدة على الأقل لإضافة خدمة أخرى."</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"‏يستخدم %1$s المحتوى الذي يظهر على شاشتك لتحديد ما يمكن ملؤه تلقائيًا."</string>
@@ -4766,10 +4771,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"إخفاء المشغِّل"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"إظهار المشغِّل"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"الوسائط"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"السماح بإضافات برنامج الكاميرا"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"‏إتاحة التنفيذ البرمجي التلقائي لميزات الكاميرا المتقدّمة، مثل Eyes Free videography"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"سيتم تفعيل البلوتوث."</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"الإنترنت"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"‏شرائح SIM"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index db665ed..50535a1 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"আনলক কৰাৰ উপায়"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ডিভাইচৰ স্ক্ৰীন লকৰ দৰে একেই"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ব্যক্তিগত স্পে’চৰ বাবে নতুন লক বাছনি কৰিবনে?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"স্বয়ংক্ৰিয়ভাৱে লক কৰক"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"প্ৰাইভেট স্পেচ স্বয়ংক্ৰিয়ভাৱে লক কৰক"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"প্ৰাইভেট স্পেচ স্বয়ংক্ৰিয়ভাৱে লক কৰক"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"যদি আপুনি কিছু সময়ৰ বাবে আপোনাৰ ডিভাইচ ব্যৱহাৰ কৰা নাই, তেন্তে আপুনি আপোনাৰ প্ৰাইভেট স্পেচ স্বয়ংক্ৰিয়ভাৱে লক কৰিব পাৰে"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"প্ৰতিবাৰ ডিভাইচটো লক হ’লে"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"৫ মিনিটৰ নিষ্ক্ৰিয়তাৰ পাছত"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"অধিক বিকল্প পাবলৈ টাচ্চপেডৰ একেবাৰে তলৰ সোঁফালৰ কোণটোত টিপক"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"পইণ্টাৰৰ গতিবেগ"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"টাচ্চপেডৰ নিৰ্দেশসমূহ শিকক"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"গৃহ পৃষ্ঠালৈ যাওক"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"আপোনাৰ টাচ্চপেডৰ যিকোনো ঠাইত তিনিটা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰক"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"উভতি যাওক"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"এই এপে নেপথ্য়ত বেটাৰী ব্যৱহাৰ কৰিব পাৰে। আপোনাৰ বেটাৰীৰ চাৰ্জ আশা কৰাতকৈ আগতেই শেষ হ\'ব পাৰে।"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"আঁতৰাওক"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"বাতিল কৰক"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"চাৰ্জ সম্পূৰ্ণ হ’ব হৈছে"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"চাৰ্জিঙৰ সৈতে জড়িত আনুষংগিক সামগ্ৰী পৰীক্ষা কৰক"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"অমিল চাৰ্জিঙৰ বিষয়ে অধিক জানক"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"বেটাৰী মেনেজাৰ"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"স্বয়ংক্রিয়, পূৰ হোৱা, স্বয়ংক্রিয়ভাৱে পূৰ হোৱাৰ সুবিধা, ডেটা, পাছকী, পাছৱৰ্ড"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"সলনি কৰক"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"খোলক"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"একো বাছনি কৰা হোৱা নাই"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;আপুনি এই এপ্‌টোক বিশ্বাস কৰাটো নিশ্চিত কৰক&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; এ স্বয়ংপূৰ্তিৰ বাবে নিৰ্ধাৰণ কৰিবলৈ আপোনাৰ স্ক্ৰীনত দেখা দিয়া বস্তুবোৰ ব্যৱহাৰ কৰে।"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ব্যৱহাৰ কৰিবনে?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; এতিয়াৰ পৰা ইয়াত নতুন পাছৱৰ্ড, পাছকী আৰু অন্য তথ্য ছেভ কৰা হ’ব। &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;এ কি স্বয়ংক্ৰিয়ভাৱে পূৰ কৰা হ’ব সেয়া নিৰ্ধাৰণ কৰিবলৈ আপোনাৰ স্ক্ৰীনত প্ৰদৰ্শিত সমল ব্যৱহাৰ কৰিব পাৰে।"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"পাছৱৰ্ড, পাছকী আৰু স্বয়ংক্রিয়ভাৱে পূৰ হোৱাৰ সুবিধাৰ বাবে অগ্ৰাধিকাৰপ্ৰাপ্ত সেৱা"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;আটাইবোৰ সেৱা অফ কৰিবনে?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; আপুনি ছাইন ইন কৰিলে পাছৱৰ্ড, পাছকী আৰু ছেভ কৰি থোৱা অন্য তথ্য স্বয়ংক্ৰিয়ভাৱে পূৰ কৰাৰ বাবে উপলব্ধ নহ’ব"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;আপোনাৰ অগ্ৰাধিকাৰপ্ৰাপ্ত সেৱা &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;লৈ সলনি কৰক এতিয়াৰ পৰা নতুন পাছৱৰ্ড, পাছকী আৰু অন্য তথ্য ইয়াত ছেভ কৰা হ’ব। &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;এ কি স্বয়ংক্ৰিয়ভাৱে পূৰ কৰিব পাৰি সেয়া নিৰ্ধাৰণ কৰিবলৈ আপোনাৰ স্ক্ৰীনত প্ৰদৰ্শিত সমল ব্যৱহাৰ কৰিব পাৰে"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s ব্যৱহাৰ কৰিব নেকি?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"অফ কৰক"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"সলনি কৰক"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"আপোনাৰ কেৱল ৫ টা সেৱা অন হৈ থাকিব পাৰে"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"অন্য কোনো সেৱা যোগ দিবলৈ অতি কমেও ১ টা সেৱা অফ কৰক"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$sএ স্বয়ংক্ৰিয়ভাৱে কি পূৰাব পাৰি সেয়া নিৰ্ধাৰণ কৰিবলৈ আপোনাৰ স্ক্ৰীনত থকা বস্তুবোৰ ব্যৱহাৰ কৰে।"</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"প্লে’য়াৰটো লুকুৱাওক"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"প্লে’য়াৰটো দেখুৱাওক"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"মিডিয়া"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"কেমেৰা ছফ্টৱেৰৰ এক্সটেনশ্বনৰ অনুমতি দিয়ক"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"চাই নথকাকৈ কৰিব পৰা ভিডিঅ’গ্ৰাফীৰ দৰে কেমেৰাৰ উচ্চখাপৰ সুবিধাৰ ডিফ’ল্ট ছফ্টৱেৰৰ ৰূপায়ণ সক্ষম কৰে।"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ব্লুটুথ অন কৰা হ’ব"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"ইণ্টাৰনেট"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"ছিম"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 20eabc2..c95807e 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Kiliddən çıxarma üsulları"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Cihazın ekran kilidi ilə eyni"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Şəxsi sahə üçün yeni kilid seçilsin?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Avtomatik kilidləyin"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Şəxsi sahəni avtomatik kilidləyin"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Şəxsi sahəni avtomatik kilidləyin"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Cihazı bir müddət istifadə etmədikdə şəxsi sahəni avtomatik kilidləyə bilərsiniz"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Hər dəfə cihaz kilidləndikdə"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 dəqiqə fəaliyyətsizlikdən sonra"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Digər seçimlər üçün taçpedin aşağı sağ küncünə toxunun"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Kursor sürəti"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Taçped jestlərini öyrənin"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Əsas səhifəyə qayıdın"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Taçpedin istənilən yerində üç barmağınızla yuxarı sürüşdürün"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Geri qayıdın"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Bu tətbiq fon rejimində batareya enerjisi işlətdiyi üçün enerji tez qurtara bilər."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Silin"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Ləğv edin"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Tam şarj edin"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Şarj aksesuarını yoxlayın"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Uyğunsuz şarj haqqında daha ətraflı"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Batareya Meneceri"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"avto, doldurma, avto doldurma, data, giriş açarı, parol"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Dəyişin"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Açın"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Heç nə seçilməyib"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Bu tətbiqə inana biləcəyinizi dəqiqləşdirin&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Avtodoldurma&gt;%1$s&lt;/xliff:g&gt; ekranı analiz edərək avtomatik doldurula bilən sahələri tapır."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; istifadə edilsin?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Yeni parol, giriş açarı və digər məlumatlar burada yadda saxlanacaq. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; avtomatik doldurulacaq məlumatı müəyyənləşdirmək üçün ekrandakı kontentdən istifadə edə bilər."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Parol, giriş açarı və avtodoldurma üzrə tərcih edilən xidmət"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Bütün xidmətlər deaktiv edilsin?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Daxil olduqda parol, giriş açarı və yadda saxlanmış digər məlumatlar avtomatik doldurulmayacaq"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Tərcih edilən xidməti buna dəyişin: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Yeni parol, giriş açarı və digər məlumatlar burada yadda saxlanacaq. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; avtomatik doldurulacaq məlumatı müəyyənləşdirmək üçün ekrandakı kontentdən istifadə edə bilər"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s istifadə edilsin?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Deaktiv edin"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Dəyişin"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Yalnız 5 xidmət aktiv ola bilər"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Başqa xidmət əlavə etmək üçün ən azı 1-ni deaktiv edin"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s avto doldurma üçün ekrandakı məlumatdan istifadə edir."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Oyunçunu gizlədin"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Pleyerə baxın"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Kamera üçün proqram təminatı artırmalarına icazə verin"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Eyes Free videoqrafiyası kimi qabaqcıl kamera funksiyalarının defolt proqram təminatı tətbiqinə imkan verir."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth aktivləşəcək"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"İnternet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-lər"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 342a6ad..661d6f9 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -306,7 +306,7 @@
     <string name="security_settings_face_enroll_education_title_accessibility" msgid="3701874093226957891">"Podesite otključavanje licem"</string>
     <string name="security_settings_face_enroll_education_title_unlock_disabled" msgid="8810954233979716906">"Potvrdite identitet licem"</string>
     <string name="security_settings_face_enroll_education_message" msgid="4308030157487176799"></string>
-    <string name="security_settings_face_enroll_education_start" msgid="8830924400907195590">"Započnite"</string>
+    <string name="security_settings_face_enroll_education_start" msgid="8830924400907195590">"Započni"</string>
     <string name="security_settings_face_enroll_education_accessibility_dialog_message" msgid="2965952386172202665">"Ako je otključavanje licem sa funkcijom pristupačnosti isključeno, neki koraci za podešavanje možda neće ispravno raditi sa TalkBack-om."</string>
     <string name="security_settings_face_enroll_education_accessibility_dialog_negative" msgid="7872647360361245461">"Nazad"</string>
     <string name="security_settings_face_enroll_education_accessibility_dialog_positive" msgid="3148077647572203458">"Nastavite podešavanje"</string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Načini za otključavanje"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Isto kao zaključavanje ekrana uređaja"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Odabraćete novo zaključavanje za privatni prostor?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Automatski zaključaj"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Automatski zaključajte privatan prostor"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Automatski zaključajte privatan prostor"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Možete automatski da zaključate privatan prostor ako uređaj niste koristili neko vreme"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Svaki put kad se uređaj zaključa"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Posle 5 minuta neaktivnosti"</string>
@@ -1768,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"Arhiviranje nije uspelo"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"Arhivirano: <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"Vraćanje nije uspelo"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"Vraća se <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"Vraća se: <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"Drugi prenos je već u toku."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"Nema dovoljno prostora u memoriji."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"Aplikacija ne postoji."</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Dodirnite donji desni ugao tačpeda za više opcija"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Brzina pokazivača"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Naučite pokrete za tačped"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Idi na početni ekran"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Prevucite nagore sa tri prsta bilo gde na tačpedu"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Nazad"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ova aplikacija će moći da koristi bateriju u pozadini. Baterija može da se isprazni ranije nego što je očekivano."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Ukloni"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Otkaži"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Puni do kraja"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Proverite dodatnu opremu za punjenje"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Saznajte više o nekompatibilnom punjenju"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Menadžer baterije"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatski, popunjavanje, automatsko popunjavanje, podaci, pristupni ključ, lozinka"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Promeni"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Otvori"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ništa nije izabrano"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Uverite se da je ova aplikacija pouzdana&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google automatsko popunjavanje&gt;%1$s&lt;/xliff:g&gt; koristi sadržaj ekrana za utvrđivanje podataka koji mogu automatski da se popune."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Koristite &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nove lozinke, pristupni ključevi i drugi podaci će se od sada čuvati ovde. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; može da koristi ono što je na ekranu radi određivanja šta može automatski da se popuni."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Željena usluga za lozinke, pristupne ključeve i automatsko popunjavanje"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Želite da isključite ovu uslugu?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Lozinke, pristupni ključevi i druge sačuvane informacije neće biti dostupne za automatsko popunjavanje kada se prijavite"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Promenite željenu uslugu u &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nove lozinke, pristupni ključevi i drugi podaci će se od sada čuvati ovde. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; može da koristi ono što je na ekranu radi određivanja šta može automatski da se popuni"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Želite da koristite %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Isključi"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Promeni"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Može da bude uključeno samo 5 usluga"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Isključite bar 1 uslugu da biste mogli da dodate drugu"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s koristi sadržaj na ekranu da bi utvrdio šta može automatski da se popuni."</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index bd3368b..d5271f8 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Спосабы разблакіроўкі"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Аднолькава з блакіроўкай экрана прылады"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Выбраць новы спосаб блакіроўкі прыватнай прасторы?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Блакіраваць аўтаматычна"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Аўтаматычная блакіроўка прыватнай прасторы"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Аўтаматычная блакіроўка прыватнай прасторы"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Прыватная прастора можа аўтаматычна блакіравацца, калі вы не карысталіся прыладай на працягу пэўнага часу"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Пры кожнай блакіроўцы прылады"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Пасля 5 хвілін бяздзейнасці"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Націсніце правы ніжні вугал сэнсарнай панэлі, каб убачыць больш параметраў"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Хуткасць указальніка"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Даведацца пра жэсты сэнсарнай панэлі"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"На галоўную старонку"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Правядзіце трыма пальцамі ўверх у любым месцы сэнсарнай панэлі"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Назад"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Гэта праграма будзе спажываць зарад акумулятара ў фонавым рэжыме. Зарад можа скончыцца хутчэй, чым звычайна."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Зняць"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Скасаваць"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Зарадзіць поўнасцю"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Праверце зарадную прыладу"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Даведацца больш пра несумяшчальную зарадную прыладу"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Менеджар акумулятара"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"аўта, запаўненне, аўтазапаўненне, даныя, ключ доступу, пароль"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Змяніць"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Адкрыць"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Нічога не выбрана"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Упэўніцеся, што давяраеце гэтай праграме&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Аўтазапаўненне Google&gt;%1$s&lt;/xliff:g&gt; выкарыстоўвае тое, што знаходзіцца на вашым экране, каб вызначыць, што можна запоўніць аўтаматычна."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Выкарыстоўваць праграму \"&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;\"?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Новыя паролі, ключы доступу і іншыя даныя будуць захоўвацца ў ёй. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; можа аналізаваць змесціва экрана, каб выявіць палі для аўтазапаўнення."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Прыярытэтны сэрвіс для пароляў, ключоў доступу і даных аўтазапаўнення"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Выключыць усе сэрвісы?&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Пасля ўваходу вы не зможаце выкарыстоўваць для аўтазапаўнення паролі, ключы доступу і іншыя захаваныя даныя"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Вы хочаце стандартна выкарыстоўваць сэрвіс \"&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;\"?&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Новыя паролі, ключы доступу і іншыя даныя будуць захоўвацца там. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; можа аналізаваць змесціва экрана, каб выяўляць палі для аўтазапаўнення."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Выкарыстоўваць %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Выключыць"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Змяніць"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Вы можаце ўключыць не больш за 5 сэрвісаў"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Каб дадаць іншы сэрвіс, выключыце прынамсі адзін з існуючых"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s выкарыстоўвайце звесткі пра тое, што ў вас на экране, каб вызначыць, да чаго можна прымяніць аўтазапаўненне."</string>
@@ -4765,7 +4770,7 @@
     <string name="media_controls_show_player" msgid="8504571042365814021">"Паказаць прайгравальнік"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"мультымедыя"</string>
     <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Дазволіць выкарыстанне пашырэнняў ПЗ камеры"</string>
-    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Дазваляе выкарыстоўваць стандартнае праграмнае забеспячэнне для пашыраных функцый камеры, такіх як відэаграфія Eyes Free."</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Дазваляе выкарыстоўваць стандартную праграмную рэалізацыю пашыраных функцый камеры, такіх як здымка відэа без неабходнасці глядзець на экран"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Будзе ўключаны Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Інтэрнэт"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-карты"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index e246a1e..023c6e7 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Начини за отключване"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Като опцията за заключване на екрана на устройството"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Ново заключване на частното пространство?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Автоматично заключване"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Автоматично заключване на частното пространство"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Автоматично заключване на частното пространство"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Частното ви пространство може да се заключва автоматично, ако не сте използвали устройството си за определен период от време"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"При всяко заключване на устройството"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"След 5 минути неактивност"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Фигура"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"ПИН"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Парола"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Да се премахнат ли всички опции за заключване на екрана?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Да се премахне ли защитата на потребителския профил?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Фигурата защитава телефона ви, ако бъде изгубен или откраднат"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Фигурата защитава телефона ви, ако бъде изгубен или откраднат.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Това действие ще изтрие модела на отпечатъка, съхраняван на устройството ви. Моделът на лицето ви също ще бъде изтрит надеждно и за постоянно. Няма да можете да използвате лицето и отпечатъка си за удостоверяване в приложения."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"ПИН кодът защитава телефона ви, ако устройството бъде изгубено или откраднато"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Ще загубите запазени данни, като например ПИН кода си.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картите, настроени за безконтактно плащане, ще бъдат премахнати.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Портфейлите и другите приложения, които изискват отключване на устройството, може да не работят правилно."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"ПИН кодът защитава телефона ви, ако устройството бъде изгубено или откраднато.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Това действие ще изтрие и модела на отпечатъка, съхраняван на устройството ви. Няма да можете да използвате отпечатъка си за удостоверяване в приложения."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Ще загубите запазени данни, като например ПИН кода и модела на отпечатъка си.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картите, настроени за безконтактно плащане, ще бъдат премахнати.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Портфейлите и другите приложения, които изискват отключване на устройството, може да не работят правилно."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"ПИН кодът защитава телефона ви, ако устройството бъде изгубено или откраднато.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Моделът на лицето ви също ще бъде изтрит надеждно и за постоянно. Няма да можете да използвате лицето си за удостоверяване в приложения."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Ще загубите запазени данни, като например ПИН кода и модела на лицето си.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картите, настроени за безконтактно плащане, ще бъдат премахнати.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Портфейлите и другите приложения, които изискват отключване на устройството, може да не работят правилно."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"ПИН кодът защитава телефона ви, ако устройството бъде изгубено или откраднато.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Това действие ще изтрие модела на отпечатъка, съхраняван на устройството ви. Моделът на лицето ви също ще бъде изтрит надеждно и за постоянно. Няма да можете да използвате лицето и отпечатъка си за удостоверяване в приложения."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Ще загубите запазени данни, като например ПИН кода и моделите на лицето и отпечатъците си.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картите, настроени за безконтактно плащане, ще бъдат премахнати.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Портфейлите и другите приложения, които изискват отключване на устройството, може да не работят правилно."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Паролата защитава телефона ви, ако бъде изгубен или откраднат"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Паролата защитава телефона ви, ако бъде изгубен или откраднат.<xliff:g id="EMPTY_LINE">
 
@@ -1697,7 +1707,7 @@
     <string name="force_stop" msgid="2681771622136916280">"Принудител­но спиране"</string>
     <string name="archive" msgid="9074663845068632127">"Архивиране"</string>
     <string name="restore" msgid="7622486640713967157">"Възстановяване"</string>
-    <string name="restoring_step_one" msgid="3465050101254272874">"Възстановява се"</string>
+    <string name="restoring_step_one" msgid="3465050101254272874">"Възстановяване"</string>
     <string name="restoring_step_two" msgid="140484846432595108">"Възстановява се."</string>
     <string name="restoring_step_three" msgid="3712883580876329811">"Възстановява се.."</string>
     <string name="restoring_step_four" msgid="8966846882470446209">"Възстановява се..."</string>
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"За още опции докоснете долния десен ъгъл на сензорния панел"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Скорост на курсора"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Жестове със сензорния панел: Урок"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Към началния екран"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Прекарайте три пръста нагоре по сензорния панел"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Връщане назад"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Това приложение ще може да използва батерията на заден план. Тя може да се изтощи по-рано от очакваното."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Премахване"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Отказ"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Пълно зареждане"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Проверете аксесоара за зареждане"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Научете повече за несъвместимите начини на зареждане"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Мениджър на батерията"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"автоматично, попълване, автоматично попълване, данни, ключ за достъп, парола"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Промяна"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Отваряне"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Нищо не е избрано"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Уверете се, че имате доверие на това приложение&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Функцията на Google за автоматично попълване&gt;%1$s&lt;/xliff:g&gt; използва това, което е на екрана ви, за да определи какво може да се попълни автоматично."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Да се използва ли &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; От сега нататък тук ще се запазват новите пароли, ключове за достъп и друга информация. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; може да използва съдържанието на екрана ви, за да определи какво може да бъде попълнено автоматично."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Предпочитана услуга за пароли, ключове за достъп и автоматично попълване"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Да се изключат ли всички услуги?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Паролите, ключовете за достъп и другите данни няма да са налице, когато влизате в профил"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Искате ли да зададете &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; като предпочитана услуга?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; От сега нататък тук ще се запазват новите пароли, ключове за достъп и други данни. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; може да използва съдържанието на екрана ви, за да определи какво може да бъде попълнено автоматично"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Да се използва ли %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Изключване"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Промяна"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Можете да включите само 5 услуги"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"За да добавите друга услуга, изключете поне 1"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s използва съдържанието на екрана ви, за да определи какво може да бъде попълнено автоматично."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Скриване на плейъра"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Показване на плейъра"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"мултимедия"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Разрешаване на разширенията за софтуера на камерата"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Дава възможност за внедряването на основния софтуер за разширените функции на камерата, като например невизуално видеозаснемане."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Ще се включи Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Интернет"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM карти"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 63ff456..7db70b3 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"আনলক করার বিভিন্ন উপায়"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ডিভাইসের স্ক্রিন লকের মত একরকমের"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"প্রাইভেট স্পেসের জন্য নতুন লক বেছে নেবেন?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"অটোমেটিক লক করুন"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"প্রাইভেট স্পেস অটোমেটিক লক করুন"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"প্রাইভেট স্পেস অটোমেটিক লক করুন"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"আপনি বেশ কিছুক্ষণ নিজের ডিভাইস ব্যবহার না করলে আপনার প্রাইভেট স্পেস অটোমেটিক লক করতে পারেন"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"প্রতিবার ডিভাইস লক হলে"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"৫ মিনিট অ্যাক্টিভ না থাকলে"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"প্যাটার্ন"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"পিন"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"পাসওয়ার্ড"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"ডিভাইস আনলক করার সব সুবিধা সরিয়ে দিতে চান?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"প্রোফাইলের সুরক্ষা সরাবেন?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"আপনার ফোন হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"আপনার ফোন হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে।<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g> এটি আপনার ডিভাইসে স্টোর করা ফিঙ্গারপ্রিন্ট মডেল মুছে ফেলে। আপনার ফেস মডেলও স্থায়ীভাবে এবং নিরাপদে মুছে ফেলা হবে। অ্যাপে যাচাইকরণ করার জন্য আপনার ফেস বা আঙ্গুলের ছাপ ব্যবহার করতে পারবেন না।"</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"আপনার ফোন হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"আপনি পিনের মতো নিজের সেভ করা ডেটাতে অ্যাক্সেস হারিয়ে ফেলবেন।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>কন্ট্যাক্টলেস পেমেন্টের জন্য সেট আপ করা কার্ড সরিয়ে দেওয়া হবে।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>ওয়ালেট এবং অন্যান্য অ্যাপ যা ব্যবহার করতে ডিভাইস আনলক করতে হয়, তা সঠিকভাবে কাজ নাও করতে পারে।"</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"আপনার ফোন হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।<xliff:g id="EMPTY_LINE">
 
 </xliff:g> এটি আপনার ডিভাইসে স্টোর করা ফিঙ্গারপ্রিন্ট মডেলও মুছে ফেলে। অ্যাপে যাচাইকরণ করার জন্য আপনার আঙ্গুলের ছাপ ব্যবহার করতে পারবেন না।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"আপনি পিন ও ফিঙ্গারপ্রিন্ট মডেলের মতো নিজের সেভ করা ডেটাতে অ্যাক্সেস হারিয়ে ফেলবেন।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>কন্ট্যাক্টলেস পেমেন্টের জন্য সেট আপ করা কার্ড সরিয়ে দেওয়া হবে।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>ওয়ালেট এবং অন্যান্য অ্যাপ যা ব্যবহার করতে ডিভাইস আনলক করতে হয়, তা সঠিকভাবে কাজ নাও করতে পারে।"</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"আপনার ফোন হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।<xliff:g id="EMPTY_LINE">
 
 </xliff:g>আপনার ফেস মডেলও স্থায়ীভাবে এবং নিরাপদে মুছে ফেলা হবে। ফেস ব্যবহার করে আপনি অ্যাপে যাচাইকরণ করতে পারবেন না।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"আপনি পিন ও ফেস মডেলের মতো নিজের সেভ করা ডেটাতে অ্যাক্সেস হারিয়ে ফেলবেন।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>কন্ট্যাক্টলেস পেমেন্টের জন্য সেট আপ করা কার্ড সরিয়ে দেওয়া হবে।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>ওয়ালেট এবং অন্যান্য অ্যাপ যা ব্যবহার করতে ডিভাইস আনলক করতে হয়, তা সঠিকভাবে কাজ নাও করতে পারে।"</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"আপনার ফোন হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।<xliff:g id="EMPTY_LINE">
 
 </xliff:g> এটি আপনার ডিভাইসে স্টোর করা ফিঙ্গারপ্রিন্ট মডেল মুছে ফেলে। আপনার ফেস মডেলও স্থায়ীভাবে এবং নিরাপদে মুছে ফেলা হবে। অ্যাপে যাচাইকরণ করার জন্য আপনার ফেস বা আঙ্গুলের ছাপ ব্যবহার করতে পারবেন না।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"আপনি পিন, ফেস ও ফিঙ্গারপ্রিন্ট মডেলের মতো নিজের সেভ করা ডেটাতে অ্যাক্সেস হারিয়ে ফেলবেন।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>কন্ট্যাক্টলেস পেমেন্টের জন্য সেট আপ করা কার্ড সরিয়ে দেওয়া হবে।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>ওয়ালেট এবং অন্যান্য অ্যাপ যা ব্যবহার করতে ডিভাইস আনলক করতে হয়, তা সঠিকভাবে কাজ নাও করতে পারে।"</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"আপনার ফোন হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"আপনার ফোন হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে।<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"আরও বিকল্পের জন্য টাচপ্যাডের নিচে ডানদিকের কোণায় ট্যাপ করুন"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"পয়েন্টারের গতি"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"টাচপ্যাডের জেসচার সম্পর্কে জানুন"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"হোম স্ক্রিনে যান"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"আপনার টাচপ্যাডে তিনটি আঙুলের সাহায্যে উপরের দিকে সোয়াইপ করুন"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ফিরে যান"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"এই অ্যাপটি ব্যাকগ্রাউন্ডে ব্যাটারি ব্যবহার করতে পারবে। প্রত্যাশিত সময়ের আগেই আপনার ব্যাটারির চার্জ শেষ হয়ে যেতে পারে।"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"সরান"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"বাতিল করুন"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"পুরো চার্জ দিন"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"চার্জিং অ্যাক্সেসরি চেক করুন"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"মানানসই নয় এমন চার্জিং সম্পর্কে আরও জানুন"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ব্যাটারি ম্যানেজার"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"অটো, ফিল, অটো-ফিল ফিচার, ডেটা, পাসকি, পাসওয়ার্ড"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"পরিবর্তন করুন"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"খুলুন"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"কিছুই বেছে নেওয়া হয়নি"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;নিশ্চিত করুন যে এই অ্যাপটি বিশ্বাসযোগ্য&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; কোনও তথ্য নিজে থেকে পূরণ করা যাবে কিনা, তা নির্ণয় করতে &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; অ্যাপটি আপনার স্ক্রিনে যা দেখা যাচ্ছে সেই অনুযায়ী সিদ্ধান্ত নেয়।"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; এখন থেকে নতুন পাসওয়ার্ড, পাসকী ও অন্যান্য তথ্য এখানে সেভ করা হবে। কী কী অটোফিল করা যেতে পারে তা নির্ধারণ করতে, আপনার স্ক্রিনে দেখানো বিষয় &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ব্যবহার করতে পারে।"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"পাসওয়ার্ড, পাসকী &amp; অটোফিল"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;সবকটি পরিষেবা বন্ধ করবেন?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; আপনি সাইন-ইন করার সময় পাসওয়ার্ড, \'পাসকী\' ও অন্যান্য তথ্য উপলভ্য হবে না"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;আপনার পছন্দের পরিষেবা পাল্টে এটি করুন: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; এখন থেকে নতুন পাসওয়ার্ড, \'পাসকী\' ও অন্যান্য তথ্য এখানে সেভ করা হবে। কী কী অটোফিল করা যেতে পারে তা নির্ধারণ করতে, আপনার স্ক্রিনে দেখানো বিষয় &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ব্যবহার করতে পারে"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s ব্যবহার করবেন?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"বন্ধ করুন"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"পরিবর্তন করুন"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"একবারে আপনি শুধুমাত্র ৫টি পরিষেবা চালু রাখতে পারবেন"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"অন্য একটি পরিষেবা যোগ করতে হলে অন্তত ১টি পরিষেবা বন্ধ করুন"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"কী কী অটোফিল করা যাবে তা নির্ধারণ করতে, %1$s, আপনার স্ক্রিনে যা দেখা যাচ্ছে সেগুলি ব্যবহার করে।"</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"প্লেয়ার লুকান"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"প্লেয়ার দেখুন"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"মিডিয়া"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"ক্যামেরা সফ্টওয়্যার এক্সটেনশনের অনুমতি দিন"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"উন্নত ক্যামেরা ফিচারের জন্য ডিফল্ট সফ্টওয়্যার প্রয়োগ করার প্রসেস চালু করে যেমন, চোখের সাহায্য ছাড়াই ভিডিওগ্রাফি।"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth চালু হবে"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"ইন্টারনেট"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"সিম"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index dfa0425..d866df6 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Načini otključavanja"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Isto kao i zaključavanje ekrana uređaja"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Odabrati novo zaključavanje privatnog prostora?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Zaključaj automatski"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Automatski zaključajte privatni prostor"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Automatski zaključaj privatni prostor"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Možete automatski zaključati privatni prostor ako niste koristili uređaj neko vrijeme"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Svaki put kada se ekran zaključa"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Nakon 5 minuta neaktivnosti"</string>
@@ -678,7 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Uzorak"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Lozinka"</string>
-    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Želite li ukloniti sve vrste otključavanja uređaja?"</string>
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Ukloniti sve vrste otključavanja uređaja?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Želite li ukloniti zaštitu profila?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Uzorak štiti telefon ako ga izgubite ili ga neko ukrade"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Uzorak štiti telefon ako ga izgubite ili ga neko ukrade.<xliff:g id="EMPTY_LINE">
@@ -691,35 +690,35 @@
 
 </xliff:g>Ovim brišete model otiska prsta pohranjen na uređaju. Vaš model lica će se također trajno i sigurno izbrisati. Nećete moći koristiti lice niti otisak prsta za autentifikaciju u aplikacijama."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN štiti telefon ako ga izgubite ili ga neko ukrade"</string>
-    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Izgubit ćete spremljene podatke, primjerice svoj PIN.<xliff:g id="EMPTY_LINE_0">
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Izgubit ćete sačuvane podatke, kao što je PIN.<xliff:g id="EMPTY_LINE_0">
 
-</xliff:g>Kartice koje su postavljene za opciju beskontaktnog plaćanja uklonit će se.<xliff:g id="EMPTY_LINE_1">
+</xliff:g>Uklonit će se kartice postavljene za beskontaktno plaćanje.<xliff:g id="EMPTY_LINE_1">
 
-</xliff:g>Novčanici i druge aplikacije koje zahtijevaju otključavanje uređaja možda neće pravilno funkcionirati."</string>
+</xliff:g>Novčanik i druge aplikacije za koje je potrebno otključati uređaj možda neće funkcionirati ispravno."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN štiti telefon ako ga izgubite ili ga neko ukrade.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Ovim također brišete model otiska prsta pohranjen na uređaju. Nećete moći koristiti otisak prsta za autentifikaciju u aplikacijama."</string>
-    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Izgubit ćete spremljene podatke, primjerice svoj PIN i model otiska prsta.<xliff:g id="EMPTY_LINE_0">
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Izgubit ćete sačuvane podatke, kao što su PIN i model otiska prsta.<xliff:g id="EMPTY_LINE_0">
 
-</xliff:g>Kartice koje su postavljene za opciju beskontaktnog plaćanja uklonit će se.<xliff:g id="EMPTY_LINE_1">
+</xliff:g>Uklonit će se kartice postavljene za beskontaktno plaćanje.<xliff:g id="EMPTY_LINE_1">
 
-</xliff:g>Novčanici i druge aplikacije koje zahtijevaju otključavanje uređaja možda neće pravilno funkcionirati."</string>
+</xliff:g>Novčanik i druge aplikacije za koje je potrebno otključati uređaj možda neće funkcionirati ispravno."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN štiti telefon ako ga izgubite ili ga neko ukrade.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Vaš model lica će se također trajno i sigurno izbrisati. Nećete moći koristiti lice za autentifikaciju u aplikacijama."</string>
-    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Izgubit ćete spremljene podatke, primjerice svoj PIN i model lica.<xliff:g id="EMPTY_LINE_0">
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Izgubit ćete sačuvane podatke, kao što su PIN i model lica.<xliff:g id="EMPTY_LINE_0">
 
-</xliff:g>Kartice koje su postavljene za opciju beskontaktnog plaćanja uklonit će se.<xliff:g id="EMPTY_LINE_1">
+</xliff:g>Uklonit će se kartice postavljene za beskontaktno plaćanje.<xliff:g id="EMPTY_LINE_1">
 
-</xliff:g>Novčanici i druge aplikacije koje zahtijevaju otključavanje uređaja možda neće pravilno funkcionirati."</string>
+</xliff:g>Novčanik i druge aplikacije za koje je potrebno otključati uređaj možda neće funkcionirati ispravno."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN štiti telefon ako ga izgubite ili ga neko ukrade.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Ovim brišete model otiska prsta pohranjen na uređaju. Vaš model lica će se također trajno i sigurno izbrisati. Nećete moći koristiti lice niti otisak prsta za autentifikaciju u aplikacijama."</string>
-    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Izgubit ćete spremljene podatke, primjerice svoj PIN i modele lica i otiska prsta.<xliff:g id="EMPTY_LINE_0">
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Izgubit ćete sačuvane podatke, kao što su PIN, model lica i model otiska prsta.<xliff:g id="EMPTY_LINE_0">
 
-</xliff:g>Kartice koje su postavljene za opciju beskontaktnog plaćanja uklonit će se.<xliff:g id="EMPTY_LINE_1">
+</xliff:g>Uklonit će se kartice postavljene za beskontaktno plaćanje.<xliff:g id="EMPTY_LINE_1">
 
-</xliff:g>Novčanici i druge aplikacije koje zahtijevaju otključavanje uređaja možda neće pravilno funkcionirati."</string>
+</xliff:g>Novčanik i druge aplikacije za koje je potrebno otključati uređaj možda neće funkcionirati ispravno."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Lozinka štiti telefon ako ga izgubite ili ga neko ukrade"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Lozinka štiti telefon ako ga izgubite ili ga neko ukrade.<xliff:g id="EMPTY_LINE">
 
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Dodirnite donji desni ugao dodirne podloge za više opcija"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Brzina pokazivača"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Naučite pokrete dodirne podloge"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Idite na početni ekran"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Prevucite nagore s tri prsta bilo gdje na dodirnoj podlozi"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Nazad"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ova aplikacija će moći koristiti bateriju u pozadini. Vaša baterija bi se mogla isprazniti prije nego što očekujete."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Ukloni"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Otkaži"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Punjenje do kraja"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Provjerite opremu za punjenje"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Saznajte više o nekompatibilnom punjenju"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Upravitelj baterije"</string>
@@ -3936,7 +3940,7 @@
     <string name="disabled_by_policy_title_camera" msgid="6616508876399613773">"Korištenje kamere nije moguće"</string>
     <string name="disabled_by_policy_title_screen_capture" msgid="6085100101044105811">"Izrada snimaka ekrana nije moguća"</string>
     <string name="disabled_by_policy_title_suspend_packages" msgid="4223983156635729793">"Nije moguće otvoriti aplikaciju"</string>
-    <string name="disabled_by_policy_title_financed_device" msgid="2328740314082888228">"Blokirao vaš dobavljač kredita"</string>
+    <string name="disabled_by_policy_title_financed_device" msgid="2328740314082888228">"Blokirao vaš dobavljač uređaja na kredit"</string>
     <string name="disabled_by_policy_title_biometric_parental_consent" msgid="2463673997797134678">"Potreban je roditelj"</string>
     <string name="disabled_by_policy_content_biometric_parental_consent" msgid="7124116806784305206">"Predaj telefon roditelju da započne postavljanje"</string>
     <string name="disabled_by_policy_parental_consent" msgid="9166060049019018978">"Daj telefon roditelju da dozvoli promjenu ove postavke."</string>
@@ -4257,14 +4261,14 @@
     <string name="toast_allows_restricted_settings_successfully" msgid="1219116121291466102">"Ograničene postavke su dozvoljene za aplikaciju <xliff:g id="APP_NAME">%s</xliff:g>"</string>
     <string name="blocked_by_restricted_settings_content" msgid="3628660029601161080">"Radi vaše sigurnosti, ova postavka je trenutno nedostupna."</string>
     <string name="financed_privacy_settings" msgid="2575114436197204145">"Informacije o finansiranom uređaju"</string>
-    <string name="financed_privacy_intro" msgid="7836497475568741579">"Vaš dobavljač kredita može promijeniti postavke i instalirati softver na ovom uređaju tokom postavljanja.\n\nAko propustite plaćanje, vaš dobavljač kredita može zaključati uređaj i promijeniti postavke uređaja.\n\nDa saznate više, kontaktirajte dobavljača kredita."</string>
+    <string name="financed_privacy_intro" msgid="7836497475568741579">"Vaš dobavljač uređaja na kredit može promijeniti postavke i instalirati softver na ovom uređaju tokom postavljanja.\n\nAko propustite plaćanje, dobavljač uređaja na kredit može zaključati uređaj i promijeniti postavke uređaja.\n\nDa saznate više, kontaktirajte dobavljača uređaja na kredit."</string>
     <string name="financed_privacy_restrictions_category" msgid="2472659467919651602">"Ako je vaš uređaj finansirani uređaj, ne možete:"</string>
     <string name="financed_privacy_install_apps" msgid="7381718005710210851">"instalirati aplikacije izvan Play trgovine"</string>
     <string name="financed_privacy_safe_mode" msgid="5362149445732602578">"ponovo pokrenuti uređaj u sigurnom načinu rada"</string>
     <string name="financed_privacy_multi_users" msgid="1727194928477613081">"dodati više korisnika na uređaj"</string>
     <string name="financed_privacy_config_date_time" msgid="8567370445374984365">"promijeniti datum, vrijeme i vremenske zone"</string>
     <string name="financed_privacy_developer_options" msgid="7602001474669831672">"koristiti opcije za programere"</string>
-    <string name="financed_privacy_credit_provider_capabilities_category" msgid="8737902277892987998">"Vaš dobavljač kredita može:"</string>
+    <string name="financed_privacy_credit_provider_capabilities_category" msgid="8737902277892987998">"Vaš dobavljač uređaja na kredit može:"</string>
     <string name="financed_privacy_IMEI" msgid="1852413860963824799">"pristupiti vašem IMEI broju"</string>
     <string name="financed_privacy_factory_reset" msgid="5505016667590160732">"vratiti uređaj na fabričke postavke ako nešto ne bude uredu"</string>
     <string name="financed_privacy_locked_mode_category" msgid="3708288398912647751">"Ako se vaš uređaj zaključa, možete samo:"</string>
@@ -4272,7 +4276,7 @@
     <string name="financed_privacy_system_info" msgid="4158031444108708927">"pregledati informacije o sistemu kao što su datum, vrijeme, status mreže i podaci o bateriji"</string>
     <string name="financed_privacy_turn_on_off_device" msgid="3331566753152790571">"uključiti ili isključiti uređaj"</string>
     <string name="financed_privacy_notifications" msgid="5932303271274089968">"pregledati obavještenja i tekstualne poruke"</string>
-    <string name="financed_privacy_allowlisted_apps" msgid="8333040812194879963">"pristupati aplikacijama koje je dozvolio dobavljač kredita"</string>
+    <string name="financed_privacy_allowlisted_apps" msgid="8333040812194879963">"pristupati aplikacijama koje je dozvolio dobavljač uređaja na kredit"</string>
     <string name="financed_privacy_fully_paid_category" msgid="9221763928564246923">"Kada platite cjelokupni iznos:"</string>
     <string name="financed_privacy_restrictions_removed" msgid="3182636815294595072">"sva ograničenja se uklanjaju s uređaja"</string>
     <string name="financed_privacy_uninstall_creditor_app" msgid="6339004120497310705">"možete deinstalirati aplikaciju povjerioca"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatski, popuniti, automatsko popunjavanje, podaci, pristupni ključ, lozinka"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Promijenite"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Otvori"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nije ništa odabrano"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Provjerite je li ova aplikacija pouzdana&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Automatsko popunjavanje&gt;%1$s&lt;/xliff:g&gt; koristi sadržaj na vašem ekranu da odredi šta se može automatski popuniti."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Koristite aplikaciju &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nove lozinke, pristupni ključevi i druge informacije će se odsad pohranjivati ovdje. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; može koristiti ono što je na ekranu da utvrdi šta se može automatski popuniti."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Željena usluga za lozinke, pristupne ključeve i automatsko popunjavanje"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Isključiti sve usluge?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Lozinke, pristupni ključevi i druge sačuvane informacije neće biti dostupne za automatsko popunjavanje kada se prijavite"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Promijenite željenu uslugu u &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nove lozinke, pristupni ključevi i druge informacije od sada će se pohranjivati na tu uslugu. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; može koristiti ono što je na ekranu da utvrdi šta se može automatski popuniti"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Koristiti uslugu %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Isključi"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Promijeni"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Možete imati samo 5 uključenih usluga"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Isključite barem 1 uslugu da dodate drugu"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s koristi sadržaj na ekranu da odredi šta se može automatski popuniti."</string>
@@ -4763,8 +4768,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Sakrij plejer"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Prikaži plejer"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"mediji"</string>
-    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Dopuštanje proširenja softvera kamere"</string>
-    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Omogućuje zadanu softversku implementaciju naprednih značajki kamere, kao što je videografija za slijepe i slabovidne."</string>
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Dozvoli softverske ekstenzije kamere"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Omogućava zadanu softversku primjenu naprednih funkcija kamere kao što je videografija za slijepe i slabovidne."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth će se uključiti"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-ovi"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index b560318..2094def 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Formes de desbloqueig"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"El mateix bloqueig de pantalla que el del dispositiu"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Vols triar un bloqueig nou per a l\'espai privat?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Bloqueja automàticament"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Bloqueja l\'espai privat automàticament"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Bloqueja l\'espai privat automàticament"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Pots bloquejar l\'espai privat automàticament si no has utilitzat el dispositiu durant un temps"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Cada vegada que es bloquegi el dispositiu"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Després de 5 minuts d\'inactivitat"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Toca l\'extrem inferior dret del ratolí per veure més opcions"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocitat del punter"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Aprèn els gestos del ratolí tàctil"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Ves a la pàgina d\'inici"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Fes lliscar tres dits cap amunt al ratolí tàctil"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Torna"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Aquesta aplicació podrà utilitzar la bateria en segon pla, cosa que pot provocar que s\'esgoti abans del previst."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Suprimeix"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancel·la"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Carrega completament"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Revisa l\'accessori de càrrega"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Més informació sobre la càrrega incompatible"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Gestor de bateria"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, emplena, emplenament automàtic, dades, clau d\'accés, contrasenya"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Canvia"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Obre"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"No s\'ha seleccionat res"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Assegura\'t que confies en aquesta aplicació&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Emplenament automàtic amb Google&gt;%1$s&lt;/xliff:g&gt; utilitza el contingut que es mostra a la pantalla per determinar què es pot emplenar automàticament."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Utilitza &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Les noves contrasenyes, claus d\'accés i altres dades es desaran aquí a partir d\'ara. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pot fer servir el que es mostra a la pantalla per determinar què es pot emplenar automàticament."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Servei preferit per a les contrasenyes, les claus d\'accés i Emplenament automàtic"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Vols desactivar tots els serveis?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Les contrasenyes, les claus d\'accés i altres dades desades no estaran disponibles per a l\'emplenament automàtic quan iniciïs la sessió."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Vols canviar el teu proveïdor de serveis preferit a &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Les noves contrasenyes, claus d\'accés i altres dades es desaran aquí a partir d\'ara. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pot fer servir el que es mostra a la pantalla per determinar què es pot emplenar automàticament."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Vols utilitzar %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Desactiva"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Canvia"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Només pots tenir 5 serveis activats"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Desactiva almenys 1 servei per afegir-ne un altre"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s fa servir el que es mostra a la pantalla per determinar què es pot emplenar automàticament."</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 954b4b9..77a6b80 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Způsoby odemykání"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Stejný jako zámek obrazovky zařízení"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Vybrat nový zámek pro soukromý prostor?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Zamykat automaticky"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Automaticky zamykat soukromý prostor"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Automaticky zamykat soukromý prostor"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Pokud zařízení nějakou dobu nepoužijete, soukromý prostor se může automaticky zamknout"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Vždy, když se zařízení zamkne"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Po 5 minutách nečinnosti"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Klepnutím na pravý dolní roh touchpadu zobrazíte další možnosti"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Rychlost kurzoru"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Naučte se gesta touchpadu"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Přejít na domovskou stránku"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Přejeďte třemi prsty nahoru kdekoli na touchpadu"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Zpět"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Aplikace začne využívat baterii na pozadí. Baterie se možná vybije dřív, než se očekávalo."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Odstranit"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Zrušit"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Úplně nabít"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Zkontrolujte nabíjecí příslušenství"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Další informace o nekompatibilním nabíjení"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Správce baterie"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatické, vyplňování, automatické vyplňování, údaje, přístupový klíč, heslo"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Změnit"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Otevřít"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nejsou vybrány žádné položky"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Zkontrolujte, zda se jedná o důvěryhodnou aplikaci&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Automatické doplňování Google&gt;%1$s&lt;/xliff:g&gt; určuje, co lze automaticky vyplnit, na základě obsahu obrazovky."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Používat aplikaci &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nová hesla, přístupové klíče a další informace se budou od této chvíle ukládat sem. Aplikace &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; může používat obsah obrazovky k určení, co lze automaticky vyplnit."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Preferovaná služba pro hesla, přístupové klíče a automatické vyplňování"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Vypnout všechny služby?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Hesla, přístupové klíče a další uložené údaje nebude možné po přihlášení automaticky vyplňovat"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Změnit preferovanou službu na &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nová hesla, přístupové klíče a další informace se budou od této chvíle ukládat sem. Aplikace &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; může používat obsah obrazovky k určení, co lze automaticky vyplnit."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Použít %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Vypnout"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Změnit"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Lze mít maximálně pět zapnutých služeb"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Pokud chcete přidat další službu, alespoň jednu vypněte"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s určuje údaje, které lze automaticky vyplnit, na základě obsahu obrazovky."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index ba7acba..f25ef2f 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Muligheder for oplåsning"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Den samme som enhedens skærmlås"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Vil du vælge en ny lås til det private område?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lås automatisk"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Lås det private område automatisk"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Lås det private område automatisk"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Du kan låse dit private område automatisk, hvis du ikke har brugt din enhed i et stykke tid"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Hver gang enheden låses"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Efter 5 minutters inaktivitet"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Mønster"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"Pinkode"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Adgangskode"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Vil du fjerne alle typer enhedsoplåsning?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Vil du fjerne profilbeskyttelsen?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Et mønster beskytter din telefon, hvis den bliver væk eller stjålet"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Et mønster beskytter din telefon, hvis den bliver væk eller stjålet.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Dette medfører også sletning af den fingeraftryksmodel, der er gemt på din enhed. Din ansigtsmodel bliver også slettet permanent og på sikker vis. Du kan ikke længere bruge dit ansigt eller fingeraftryk til godkendelse i apps."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"En pinkode beskytter din telefon, hvis den bliver væk eller stjålet"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Du mister gemte data såsom din pinkode.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort, som er konfigureret til kontaktløs betaling, fjernes.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Apps til digitale punge og andre apps, der kræver enhedsoplåsning, fungerer muligvis ikke korrekt."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"En pinkode beskytter din telefon, hvis den bliver væk eller stjålet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Dette medfører også sletning af den fingeraftryksmodel, der er gemt på din enhed. Du kan ikke længere bruge dit fingeraftryk til godkendelse i apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Du mister gemte data såsom din pinkode og fingeraftryksmodel.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort, som er konfigureret til kontaktløs betaling, fjernes.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Apps til digitale punge og andre apps, der kræver enhedsoplåsning, fungerer muligvis ikke korrekt."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"En pinkode beskytter din telefon, hvis den bliver væk eller stjålet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Din ansigtsmodel bliver også slettet permanent og på sikker vis. Du kan ikke længere bruge dit ansigt til godkendelse i apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Du mister gemte data såsom din pinkode og ansigtsmodel.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort, som er konfigureret til kontaktløs betaling, fjernes.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Apps til digitale punge og andre apps, der kræver enhedsoplåsning, fungerer muligvis ikke korrekt."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"En pinkode beskytter din telefon, hvis den bliver væk eller stjålet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Dette medfører også sletning af den fingeraftryksmodel, der er gemt på din enhed. Din ansigtsmodel bliver også slettet permanent og på sikker vis. Du kan ikke længere bruge dit ansigt eller fingeraftryk til godkendelse i apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Du mister gemte data såsom din pinkode samt dine ansigts- og fingeraftryksmodeller.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort, som er konfigureret til kontaktløs betaling, fjernes.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Apps til digitale punge og andre apps, der kræver enhedsoplåsning, fungerer muligvis ikke korrekt."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"En adgangskode beskytter din telefon, hvis den bliver væk eller stjålet"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"En adgangskode beskytter din telefon, hvis den bliver væk eller stjålet.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tryk nederst til højre på touchpladen for at se mere"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Markørens hastighed"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Se bevægelser på touchpladen"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Gå til startskærmen"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Stryg opad med tre fingre et vilkårligt sted på touchpladen"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Gå tilbage"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Denne app vil kunne bruge batteri i baggrunden. Enheden løber muligvis tør for batteri hurtigere end forventet."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Fjern"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Annuller"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Oplad helt"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Tjek opladningstilbehøret"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Få flere oplysninger om opladning med inkompatible strømadaptere"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Batteriadministration"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatisk, udfyldning, autofyld, data, adgangsnøgle, adgangskode"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Ændring"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Åbn"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Der er ikke valgt noget"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Sørg for, at du har tillid til denne app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; anvender indholdet af din skærm til at fastslå, hvad der kan udfyldes automatisk."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Brug &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Fra nu af gemmes nye adgangskoder, adgangsnøgler og andre oplysninger her. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan bruge, hvad der er på din skærm, til at vurdere, hvad der kan udfyldes automatisk."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Foretrukken tjeneste til adgangskoder, adgangsnøgler og autofyld"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Vil du deaktivere alle tjenester?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Adgangskoder, adgangsnøgler og andre gemte oplysninger kan ikke udfyldes automatisk, når du logger ind"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Skift din foretrukne tjeneste til &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Fra nu af gemmes nye adgangskoder, adgangsnøgler og andre oplysninger her. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan bruge, hvad der er på din skærm, til at vurdere, hvad der kan udfyldes automatisk"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Vil du bruge %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Deaktiver"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Skift"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Du kan kun have 5 tjenester aktiveret"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Deaktiver mindst 1 tjeneste for at tilføje en anden"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s bruger det, der vises på din skærm, til at afgøre, hvad der kan udfyldes automatisk."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Skjul afspiller"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Vis afspiller"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"Medier"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Tillad udvidelser for kamerasoftware"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Aktiverer implementeringen af standardsoftware for avancerede kamerafunktioner, f.eks. Eyes Free-videooptagelser."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth aktiveres"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-kort"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 699fadd..1067cb1 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Entsperrmöglichkeiten"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Gleiche Methode wie für Displaysperre des Geräts verwenden"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Neue Sperrmethode für privaten Bereich festlegen?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Automatisch sperren"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Privaten Bereich automatisch sperren"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Privaten Bereich automatisch sperren"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Du kannst deinen privaten Bereich automatisch sperren lassen, wenn du dein Gerät längere Zeit nicht verwendest"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Jedes Mal, wenn Gerät gesperrt wird"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Nach 5 Minuten Inaktivität"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Muster"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Passwort"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Alle Arten der Geräteentsperrung entfernen?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Profilschutz entfernen?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Ein Muster schützt dein Smartphone, falls es verloren geht oder gestohlen wird"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Ein Muster schützt dein Smartphone, falls es verloren geht oder gestohlen wird.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Dadurch wird das Fingerabdruckmodell gelöscht, das auf deinem Gerät gespeichert ist. Außerdem wird dein Gesichtsmodell dauerhaft und sicher gelöscht. Du kannst dein Gesicht oder deinen Fingerabdruck nicht mehr zur Authentifizierung in Apps verwenden."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Eine PIN schützt dein Smartphone, falls es verloren geht oder gestohlen wird"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Du verlierst gespeicherte Daten wie deine PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karten, die für kontaktloses Bezahlen eingerichtet wurden, werden entfernt.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets und andere Apps, für die die Entsperrung des Geräts erforderlich ist, funktionieren möglicherweise nicht mehr richtig."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Eine PIN schützt dein Smartphone, falls es verloren geht oder gestohlen wird.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Dadurch wird auch das Fingerabdruckmodell gelöscht, das auf deinem Gerät gespeichert ist. Du kannst deinen Fingerabdruck dann nicht mehr zur Authentifizierung in Apps verwenden."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Du verlierst gespeicherte Daten wie deine PIN und dein Fingerabdruckmodell.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karten, die für kontaktloses Bezahlen eingerichtet wurden, werden entfernt.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets und andere Apps, für die die Entsperrung des Geräts erforderlich ist, funktionieren möglicherweise nicht mehr richtig."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Eine PIN schützt dein Smartphone, falls es verloren geht oder gestohlen wird.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Außerdem wird dein Gesichtsmodell dauerhaft und sicher gelöscht. Du kannst dein Gesicht nicht mehr zur Authentifizierung in Apps verwenden."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Du verlierst gespeicherte Daten wie deine PIN und dein Gesichtsmodell.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karten, die für kontaktloses Bezahlen eingerichtet wurden, werden entfernt.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets und andere Apps, für die die Entsperrung des Geräts erforderlich ist, funktionieren möglicherweise nicht mehr richtig."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Eine PIN schützt dein Smartphone, falls es verloren geht oder gestohlen wird.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Dadurch wird das Fingerabdruckmodell gelöscht, das auf deinem Gerät gespeichert ist. Außerdem wird dein Gesichtsmodell dauerhaft und sicher gelöscht. Du kannst dein Gesicht oder deinen Fingerabdruck nicht mehr zur Authentifizierung in Apps verwenden."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Du verlierst gespeicherte Daten wie deine PIN, dein Gesichtsmodell und dein Fingerabdruckmodell.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karten, die für kontaktloses Bezahlen eingerichtet wurden, werden entfernt.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets und andere Apps, für die die Entsperrung des Geräts erforderlich ist, funktionieren möglicherweise nicht mehr richtig."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Ein Passwort schützt dein Smartphone, falls es verloren geht oder gestohlen wird"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Ein Passwort schützt dein Smartphone, falls es verloren geht oder gestohlen wird.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tippe unten rechts auf das Touchpad für weitere Optionen"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Zeigergeschwindigkeit"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Informationen zu Touchpad-Gesten"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Zum Start­bildschirm"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Wische irgendwo auf dem Touchpad mit drei Fingern nach oben"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Zurück"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Diese App kann dann im Hintergrund laufen und beansprucht dabei den Akku. Er könnte deshalb früher als erwartet leer sein."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Entfernen"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Abbrechen"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Vollständig aufladen"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Ladezubehör prüfen"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Weitere Informationen zu nicht kompatiblen Ladegräten"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Akku-Manager"</string>
@@ -2905,8 +2920,8 @@
     <string name="user_remove_user" msgid="8468203789739693845">"Nutzer löschen"</string>
     <string name="user_enable_calling_and_sms_confirm_title" msgid="4041510268838725520">"Telefonieren &amp; SMS zulassen?"</string>
     <string name="user_enable_calling_and_sms_confirm_message" msgid="367792286597449922">"Anrufliste und SMS-Verlauf werden für diesen Nutzer freigegeben."</string>
-    <string name="user_revoke_admin_confirm_title" msgid="3057842401861731863">"Administrator­berechti­gun­gen widerrufen?"</string>
-    <string name="user_revoke_admin_confirm_message" msgid="9207187319308572958">"Wenn du die Administratorberechtigungen für diesen Nutzer entfernst, können sie von dir oder einem anderen Administrator später wiederhergestellt werden."</string>
+    <string name="user_revoke_admin_confirm_title" msgid="3057842401861731863">"Administrator­­berechti­gun­gen widerrufen?"</string>
+    <string name="user_revoke_admin_confirm_message" msgid="9207187319308572958">"Wenn du die Administrator­berechtigungen für diesen Nutzer entfernst, können sie von dir oder einem anderen Administrator später wiederhergestellt werden."</string>
     <string name="emergency_info_title" msgid="8233682750953695582">"Notfallinformationen"</string>
     <string name="emergency_info_summary" msgid="8463622253016757697">"Informationen und Kontaktdaten für <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
     <string name="open_app_button" msgid="5025229765547191710">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ öffnen"</string>
@@ -3834,7 +3849,7 @@
     <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Der Assistent-App den Zugriff auf eine Aufnahme deines Bildschirms gestatten"</string>
     <string name="assist_flash_title" msgid="5449512572885550108">"Bildschirm kurz aufleuchten lassen"</string>
     <string name="assist_flash_summary" msgid="3032289860177784594">"Bildschirmränder kurz aufleuchten lassen, wenn die Assistent-App auf Bildschirmtext oder Screenshot zugreift"</string>
-    <string name="assist_footer" msgid="8248015363806299068">"Assistent-Apps können dir bei bestimmten Dingen helfen. Dazu greifen sie auf die Informationen zu, die aktuell auf deinem Bildschirm angezeigt werden. Damit sie dir eine umfassende Hilfe sind, unterstützen einige Apps sowohl Launcher- als auch Spracheingabedienste."</string>
+    <string name="assist_footer" msgid="8248015363806299068">"Assistent-Apps können dir bei bestimmten Dingen helfen. Dazu greifen sie auf die Informationen zu, die aktuell auf deinem Bildschirm angezeigt werden. Einige Apps unterstützen sowohl Launcher- als auch Spracheingabedienste."</string>
     <string name="average_memory_use" msgid="717313706368825388">"Durchschnittl. Speicherverbrauch"</string>
     <string name="maximum_memory_use" msgid="2171779724001152933">"Maximaler Speicherverbrauch"</string>
     <string name="memory_usage" msgid="5594133403819880617">"Speicherverbrauch"</string>
@@ -4310,8 +4325,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatisch, ausfüllen, Autofill, Daten, Passkey, Passwort"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Ändern"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Öffnen"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nichts ausgewählt"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Nur für vertrauenswürdige Apps&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; greift auf die Displayanzeige zu, um zu bestimmen, welche Felder automatisch ausgefüllt werden können. Die Funktion sollte daher nur für vertrauenswürdige Apps zugelassen werden."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Soll &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; verwendet werden?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Neue Passwörter, Passkeys und weitere Informationen werden ab sofort hier gespeichert. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kann anhand dessen, was auf deinem Bildschirm zu sehen ist, bestimmen, was automatisch ausgefüllt werden kann."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Bevorzugte Dienste für Passwörter, Passkeys &amp; Autofill"</string>
@@ -4321,6 +4335,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Alle Dienste deaktivieren?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Passwörter, Passkeys und andere gespeicherte Informationen werden nicht mehr automatisch ausgefüllt, wenn du dich anmeldest"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Bevorzugten Dienst zu &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ändern?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Neue Passwörter, Passkeys und weitere Informationen werden ab sofort hier gespeichert. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kann anhand dessen, was auf deinem Bildschirm zu sehen ist, bestimmen, was automatisch ausgefüllt werden kann."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s verwenden?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Deaktivieren"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Ändern"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Es können nur fünf Dienste aktiviert sein"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Deaktiviere mindestens einen Dienst, um einen anderen hinzuzufügen"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ermittelt anhand der Inhalte auf deinem Bildschirm, welche Informationen automatisch ausgefüllt werden können."</string>
@@ -4753,10 +4769,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Player ausblenden"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Player anzeigen"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"Medien"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Kamerasoftware-Erweiterungen zulassen"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Dadurch kann die Software von erweiterten Kamerafunktionen wie „Eyes Free“-Aufnahmetechniken standardmäßig implementiert werden."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth wird aktiviert"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-Karten"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index fb257b5..26494c2 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -302,7 +302,7 @@
     <string name="security_settings_face_preference_summary_none" msgid="523320857738436024">"Απαιτείται ρύθμιση"</string>
     <string name="security_settings_face_preference_title" msgid="2126625155005348417">"Ξεκλείδωμα με το πρόσωπο"</string>
     <string name="security_settings_face_profile_preference_title" msgid="7519527436266375005">"Ξεκλείδωμα με το πρόσωπο για επαγγελματική χρήση"</string>
-    <string name="security_settings_face_enroll_education_title" msgid="6448806884597691208">"Τρόπος ρύθμισης του Ξεκλειδώματος με το πρόσωπο"</string>
+    <string name="security_settings_face_enroll_education_title" msgid="6448806884597691208">"Ρύθμιση του Ξεκλειδ.με το πρόσωπο"</string>
     <string name="security_settings_face_enroll_education_title_accessibility" msgid="3701874093226957891">"Ρύθμιση της λειτουργίας Ξεκλείδωμα με το πρόσωπο"</string>
     <string name="security_settings_face_enroll_education_title_unlock_disabled" msgid="8810954233979716906">"Χρήση προσώπου για έλεγχο ταυτότητας"</string>
     <string name="security_settings_face_enroll_education_message" msgid="4308030157487176799"></string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Τρόποι ξεκλειδώματος"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Ίδιο με το κλείδωμα οθόνης της συσκευής"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Επιλογή νέου κλειδώματος για τον απόρρητο χώρο;"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Αυτόματο κλείδωμα"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Αυτόματο κλείδωμα απόρρητου χώρου"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Αυτόματο κλείδωμα απόρρητου χώρου"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Μπορείτε να κλειδώσετε αυτόματα τον απόρρητο χώρο σας αν δεν έχετε χρησιμοποιήσει τη συσκευή σας για μεγάλο χρονικό διάστημα"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Κάθε φορά που κλειδώνεται η συσκευή"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Μετά από 5 λεπτά αδράνειας"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Πατήστε κάτω δεξιά στην επιφάνεια αφής για περισ. επιλογές."</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Ταχύτητα δείκτη"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Μάθετε κινήσεις επιφάνειας αφής"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Μετάβαση στην αρχική οθόνη"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Σύρετε επάνω με τρία δάχτ. από οποιοδ. σημείο της επιφ. αφής"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Επιστροφή"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Αυτή η εφαρμογή θα μπορεί να χρησιμοποιήσει μπαταρία στο παρασκήνιο. Η μπαταρία σας μπορεί να εξαντληθεί πιο σύντομα από το αναμενόμενο."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Κατάργηση"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Ακύρωση"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Πλήρης φόρτιση"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Έλεγχος αξεσουάρ φόρτισης"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Μάθετε περισσότερα για τη μη συμβατή φόρτιση"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Διαχείριση μπαταρίας"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"αυτόματη, συμπλήρωση, αυτόματη συμπλήρωση, δεδομένα, κλειδί πρόσβασης, κωδικός πρόσβασης"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Αλλαγή"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Άνοιγμα"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Καμία επιλογή"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Βεβαιωθείτε ότι εμπιστεύεστε αυτή την εφαρμογή&lt;/b&gt;&lt;br/&gt; &lt;br/&gt; &lt;xliff:g Το id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; χρησιμοποιεί το περιεχόμενο της οθόνης σας για να διαπιστώσει τι μπορεί να συμπληρωθεί αυτόματα."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Χρήση του &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Από εδώ και στο εξής, οι νέοι κωδικοί πρόσβασης, τα κλειδιά πρόσβασης και άλλες πληροφορίες θα αποθηκεύονται εδώ. Το &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ενδέχεται να χρησιμοποιεί το περιεχόμενο που εμφανίζεται στην οθόνη σας για να προσδιορίσει πού μπορεί να γίνει αυτόματη συμπλήρωση."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Προτιμώμενη υπηρεσία για κωδικούς πρόσβασης, κλειδιά πρόσβασης και αυτόματη συμπλήρωση"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Να απενεργοποιηθούν όλες οι υπηρεσίες;&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Οι κωδικοί πρόσβασης, τα κλειδιά πρόσβασης και άλλες αποθηκευμένες πληροφορίες δεν θα διατίθενται για αυτόματη συμπλήρωση όταν συνδέεστε"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Αλλάξτε την υπηρεσία που προτιμάτε σε &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Από εδώ και στο εξής, οι νέοι κωδικοί πρόσβασης, τα κλειδιά πρόσβασης και άλλες πληροφορίες θα αποθηκεύονται εδώ. Η υπηρεσία &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ενδέχεται να χρησιμοποιήσει το περιεχόμενο που εμφανίζεται στην οθόνη για να προσδιορίσει τι μπορεί να συμπληρωθεί αυτόματα."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Χρήση %1$s;"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Απενεργοποίηση"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Αλλαγή"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Μπορείτε να έχετε μόνο 5 ενεργές υπηρεσίες"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Απενεργοποιήστε τουλάχιστον 1 υπηρεσία για να προσθέσετε κάποια άλλη"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"Το %1$s χρησιμοποιεί το περιεχόμενο που εμφανίζεται στην οθόνη για να προσδιορίσει τα στοιχεία που μπορούν να συμπληρωθούν αυτόματα."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Απόκρυψη προγράμματος αναπαραγωγής"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Εμφάνιση προγράμματος αναπαραγωγής"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"μέσα"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Να επιτρέπονται οι επεκτάσεις λογισμικού κάμερας"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Ενεργοποιεί την προεπιλεγμένη εφαρμογή λογισμικού σύνθετων λειτουργιών της κάμερας, όπως η φωνητική βιντεοσκόπηση."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Το Bluetooth θα ενεργοποιηθεί."</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Διαδίκτυο"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Κάρτες SIM"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index a4ba59e..cda67ff 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Ways to unlock"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Same as device screen lock"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Choose a new lock for private space?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lock automatically"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Lock private space automatically"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Lock private space automatically"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"You can lock your private space automatically if you haven\'t used your device for a period of time"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Every time device locks"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"After 5 minutes of inactivity"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Pattern"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Password"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Remove all types of device unlock?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Remove profile protection?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"A pattern protects your phone if it’s lost or stolen"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"A pattern protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>This deletes the fingerprint model stored on your device. Your face model will also be permanently and securely deleted. You won’t be able to use your face or fingerprint for authentication in apps."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"A PIN protects your phone if it’s lost or stolen"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"You will lose saved data, like your PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>This also deletes the fingerprint model stored on your device. You won’t be able to use your fingerprint for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"You will lose saved data, like your PIN and fingerprint model.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Your face model will also be permanently and securely deleted. You won’t be able to use your face for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"You will lose saved data, like your PIN and face model.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>This deletes the fingerprint model stored on your device. Your face model will also be permanently and securely deleted. You won’t be able to use your face or fingerprint for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"You will lose saved data, like your PIN, face and fingerprint models.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"A password protects your phone if it’s lost or stolen"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"A password protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tap the bottom-right corner of the touchpad for more options"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Pointer speed"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Learn touchpad gestures"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Go home"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Swipe up with three fingers anywhere on your touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Go back"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"This app will be able to use battery in the background. Your battery may run out sooner than expected."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Remove"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancel"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Charge to full"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Check charging accessory"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Learn more about incompatible charging"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, fill, autofill, data, passkey, password"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Change"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Open"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"None selected"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Make sure that you trust this app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Auto-fill&gt;%1$s&lt;/xliff:g&gt; uses what\'s on your screen to determine what can be auto-filled."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; New passwords, passkeys and other info will be saved here from now on. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; may use what\'s on your screen to determine what can be autofilled."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Preferred service for passwords, passkeys and autofill"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Turn off all services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Passwords, passkeys and other saved info won\'t be available for autofill when you sign in"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Change your preferred service to &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; New passwords, passkeys and other info will be saved here from now on. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; may use what\'s on your screen to determine what can be autofilled"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Use %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Turn off"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Change"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"You can only have 5 services on"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Turn off at least 1 service to add another"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s uses what\'s on your screen to determine what can be auto-filled."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Hide player"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Show player"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Allow camera software extensions"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Enables the default software implementation of advanced camera features, such as Eyes Free videography."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth will turn on"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMs"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 9f4ef82..31d61c6 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Ways to unlock"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Same as device screen lock"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Choose a new lock for private space?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lock automatically"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Lock private space automatically"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Lock private space automatically"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"You can lock your private space automatically if you havent used your device for a period of time"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Every time device locks"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"After 5 minutes of inactivity"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tap the bottom right corner of the touchpad for more options"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Pointer speed"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Learn touchpad gestures"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Go home"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Swipe up with three fingers anywhere on your touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Go back"</string>
@@ -2433,7 +2436,7 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"This app will be able to use battery in the background. Your battery may run out sooner than expected."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Remove"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancel"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Charge to full"</string>
+    <string name="battery_tip_charge_to_full_button" msgid="9172893341338732733">"Override"</string>
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Check charging accessory"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Learn more about incompatible charging"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4329,6 +4332,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Turn off all services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Passwords, passkeys, and other saved info won\'t be available for autofill when you sign in"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Change your preferred service to &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; New passwords, passkeys, and other info will be saved here from now on. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; may use what\'s on your screen to determine what can be autofilled"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Use %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Turn off"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Change"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"You can only have 5 services on"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Turn off at least 1 service to add another"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s uses what\'s on your screen to determine what can be autofilled."</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 6f7b5b7..84ef060 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Ways to unlock"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Same as device screen lock"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Choose a new lock for private space?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lock automatically"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Lock private space automatically"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Lock private space automatically"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"You can lock your private space automatically if you haven\'t used your device for a period of time"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Every time device locks"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"After 5 minutes of inactivity"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Pattern"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Password"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Remove all types of device unlock?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Remove profile protection?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"A pattern protects your phone if it’s lost or stolen"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"A pattern protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>This deletes the fingerprint model stored on your device. Your face model will also be permanently and securely deleted. You won’t be able to use your face or fingerprint for authentication in apps."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"A PIN protects your phone if it’s lost or stolen"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"You will lose saved data, like your PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>This also deletes the fingerprint model stored on your device. You won’t be able to use your fingerprint for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"You will lose saved data, like your PIN and fingerprint model.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Your face model will also be permanently and securely deleted. You won’t be able to use your face for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"You will lose saved data, like your PIN and face model.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>This deletes the fingerprint model stored on your device. Your face model will also be permanently and securely deleted. You won’t be able to use your face or fingerprint for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"You will lose saved data, like your PIN, face and fingerprint models.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"A password protects your phone if it’s lost or stolen"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"A password protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tap the bottom-right corner of the touchpad for more options"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Pointer speed"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Learn touchpad gestures"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Go home"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Swipe up with three fingers anywhere on your touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Go back"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"This app will be able to use battery in the background. Your battery may run out sooner than expected."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Remove"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancel"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Charge to full"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Check charging accessory"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Learn more about incompatible charging"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, fill, autofill, data, passkey, password"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Change"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Open"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"None selected"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Make sure that you trust this app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Auto-fill&gt;%1$s&lt;/xliff:g&gt; uses what\'s on your screen to determine what can be auto-filled."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; New passwords, passkeys and other info will be saved here from now on. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; may use what\'s on your screen to determine what can be autofilled."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Preferred service for passwords, passkeys and autofill"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Turn off all services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Passwords, passkeys and other saved info won\'t be available for autofill when you sign in"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Change your preferred service to &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; New passwords, passkeys and other info will be saved here from now on. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; may use what\'s on your screen to determine what can be autofilled"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Use %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Turn off"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Change"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"You can only have 5 services on"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Turn off at least 1 service to add another"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s uses what\'s on your screen to determine what can be auto-filled."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Hide player"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Show player"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Allow camera software extensions"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Enables the default software implementation of advanced camera features, such as Eyes Free videography."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth will turn on"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMs"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index f528f6b..f7c0b53 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Ways to unlock"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Same as device screen lock"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Choose a new lock for private space?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lock automatically"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Lock private space automatically"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Lock private space automatically"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"You can lock your private space automatically if you haven\'t used your device for a period of time"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Every time device locks"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"After 5 minutes of inactivity"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Pattern"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Password"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Remove all types of device unlock?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Remove profile protection?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"A pattern protects your phone if it’s lost or stolen"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"A pattern protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>This deletes the fingerprint model stored on your device. Your face model will also be permanently and securely deleted. You won’t be able to use your face or fingerprint for authentication in apps."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"A PIN protects your phone if it’s lost or stolen"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"You will lose saved data, like your PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>This also deletes the fingerprint model stored on your device. You won’t be able to use your fingerprint for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"You will lose saved data, like your PIN and fingerprint model.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Your face model will also be permanently and securely deleted. You won’t be able to use your face for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"You will lose saved data, like your PIN and face model.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"A PIN protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>This deletes the fingerprint model stored on your device. Your face model will also be permanently and securely deleted. You won’t be able to use your face or fingerprint for authentication in apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"You will lose saved data, like your PIN, face and fingerprint models.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards set up for tap to pay will be removed.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallets and other apps that require device unlock may not work properly."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"A password protects your phone if it’s lost or stolen"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"A password protects your phone if it’s lost or stolen.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tap the bottom-right corner of the touchpad for more options"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Pointer speed"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Learn touchpad gestures"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Go home"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Swipe up with three fingers anywhere on your touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Go back"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"This app will be able to use battery in the background. Your battery may run out sooner than expected."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Remove"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancel"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Charge to full"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Check charging accessory"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Learn more about incompatible charging"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, fill, autofill, data, passkey, password"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Change"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Open"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"None selected"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Make sure that you trust this app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Auto-fill&gt;%1$s&lt;/xliff:g&gt; uses what\'s on your screen to determine what can be auto-filled."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; New passwords, passkeys and other info will be saved here from now on. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; may use what\'s on your screen to determine what can be autofilled."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Preferred service for passwords, passkeys and autofill"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Turn off all services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Passwords, passkeys and other saved info won\'t be available for autofill when you sign in"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Change your preferred service to &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; New passwords, passkeys and other info will be saved here from now on. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; may use what\'s on your screen to determine what can be autofilled"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Use %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Turn off"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Change"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"You can only have 5 services on"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Turn off at least 1 service to add another"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s uses what\'s on your screen to determine what can be auto-filled."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Hide player"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Show player"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Allow camera software extensions"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Enables the default software implementation of advanced camera features, such as Eyes Free videography."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth will turn on"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMs"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 9e64823..33ddeaa 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‎‎‏‏‏‏‎‎Ways to unlock‎‏‎‎‏‎"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‏‎‏‎‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‏‏‏‏‎‎‎‏‏‎‏‏‏‎‏‏‏‎‎Same as device screen lock‎‏‎‎‏‎"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‏‏‏‏‎‎Choose a new lock for private space?‎‏‎‎‏‎"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‏‎‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‎‏‎Lock automatically‎‏‎‎‏‎"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‎‎Lock private space automatically‎‏‎‎‏‎"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‎‏‎‎‏‏‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‎‏‎Lock private space automatically‎‏‎‎‏‎"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎‎‏‎‎‏‏‎‎‏‎‏‏‎‎‏‎‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎You can lock your private space automatically if you havent used your device for a period of time‎‏‎‎‏‎"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‏‏‎‎Every time device locks‎‏‎‎‏‎"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‎‏‏‎‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‏‎‎‏‎After 5 minutes of inactivity‎‏‎‎‏‎"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‎‏‎‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‎‎‏‎‎Tap the bottom right corner of the touchpad for more options‎‏‎‎‏‎"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‎‏‎Pointer speed‎‏‎‎‏‎"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎Learn touchpad gestures‎‏‎‎‏‎"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‎‎‏‎‎‏‏‎‏‎Go home‎‏‎‎‏‎"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‏‎‏‏‎‏‎Swipe up with three fingers anywhere on your touchpad‎‏‎‎‏‎"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‎‏‏‎‏‏‎‏‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‎‏‏‎‏‎‏‎‏‏‏‎‏‏‎‏‎‎Go back‎‏‎‎‏‎"</string>
@@ -2433,7 +2436,7 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‎‏‏‏‎‎‎‏‏‏‎‎‏‎‎‎‏‏‎This app will be able to use battery in the background. Your battery may run out sooner than expected.‎‏‎‎‏‎"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‏‏‎‎Remove‎‏‎‎‏‎"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‎‏‏‏‎‏‎‎‎‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎Cancel‎‏‎‎‏‎"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‎‎‏‎‏‎Charge to full‎‏‎‎‏‎"</string>
+    <string name="battery_tip_charge_to_full_button" msgid="9172893341338732733">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‎‎‎‏‎‏‏‏‏‎‏‎Override‎‏‎‎‏‎"</string>
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‎‏‎‏‎‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‏‏‎‏‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‎Check charging accessory‎‏‎‎‏‎"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‎Learn more about incompatible charging‎‏‎‎‏‎"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎‎‎‏‎‎‎‎‏‏‎‎‎‎‎‎‎‎‎‎‎‏‎‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‎Battery Manager‎‏‎‎‏‎"</string>
@@ -4329,6 +4332,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‏‏‎‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‏‎‎‎&lt;b&gt;Turn off all services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Passwords, passkeys, and other saved info won\'t be available for autofill when you sign in‎‏‎‎‏‎"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‏‏‏‏‎‏‏‎&lt;b&gt;Change your preferred service to &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; New passwords, passkeys, and other info will be saved here from now on. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; may use what\'s on your screen to determine what can be autofilled‎‏‎‎‏‎"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‎‎‏‎‏‎Use %1$s?‎‏‎‎‏‎"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‎‏‎‎‏‎‎‏‎Turn off‎‏‎‎‏‎"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‎‏‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎Change‎‏‎‎‏‎"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‏‏‎‎‏‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎You can only have 5 services on‎‏‎‎‏‎"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎Turn off at least 1 service to add another‎‏‎‎‏‎"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‎‏‎‎‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‏‎‏‎‏‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‎‎‏‎%1$s uses what\'s on your screen to determine what can be autofilled.‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 19fa5a4..bfb9e66 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Métodos de desbloqueo"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Igual al bloqueo de pantalla del dispositivo"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"¿Quieres un nuevo bloqueo para tu espacio privado?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Bloquear automáticamente"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Bloquea el espacio privado automáticamente"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Bloquear espacio privado automáticamente"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Puedes bloquear el espacio privado automáticamente si no usas el dispositivo por cierto periodo de tiempo"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Cada vez que el dispositivo se bloquea"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Después de 5 minutos de inactividad"</string>
@@ -1708,7 +1707,7 @@
     <string name="force_stop" msgid="2681771622136916280">"Forzar detención"</string>
     <string name="archive" msgid="9074663845068632127">"Archivar"</string>
     <string name="restore" msgid="7622486640713967157">"Restablecer"</string>
-    <string name="restoring_step_one" msgid="3465050101254272874">"Restableciendo"</string>
+    <string name="restoring_step_one" msgid="3465050101254272874">"Restablecer"</string>
     <string name="restoring_step_two" msgid="140484846432595108">"Restableciendo."</string>
     <string name="restoring_step_three" msgid="3712883580876329811">"Restableciendo.."</string>
     <string name="restoring_step_four" msgid="8966846882470446209">"Restableciendo…"</string>
@@ -1768,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"Se produjo un error al archivar"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"Se archivó <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"Se produjo un error al intentar restablecer"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"Restaurando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"Restableciendo <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"Hay otra migración en curso."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"No hay suficiente espacio de almacenamiento."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"La aplicación no existe."</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Más opciones en la esquina inferior derecha del panel táctil"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocidad del puntero"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Aprende los gestos del panel táctil"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Ir a la pantalla principal"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Desliza hacia arriba con tres dedos en el panel táctil"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Atrás"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Esta app podrá usar la batería en segundo plano. La batería podría agotarse antes de lo esperado."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Quitar"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancelar"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Cargar por completo"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Verifica el accesorio de carga"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Más información sobre la carga no compatible"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Administrador de batería"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automático, rellenar, autocompletar, datos, llave de acceso, contraseña"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Cambiar"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Abrir"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"No se seleccionó ningún elemento"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Asegúrate de que esta app sea confiable&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; usa el contenido de tu pantalla para determinar qué se puede autocompletar."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;¿Quieres usar &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; A partir de ahora, las nuevas contraseñas, llaves de acceso y otros datos se guardarán aquí. Es posible que &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; use el contenido de la pantalla para determinar lo que se puede autocompletar."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Servicio preferido para contraseñas, llaves de acceso y autocompletar"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;¿Quieres desactivar todos los servicios?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Las contraseñas, llaves de acceso y otra información guardada no estarán disponibles para autocompletar cuando accedas"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;¿Quieres cambiar tu servicio preferido a &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Las contraseñas, llaves de acceso y otra información nueva se guardarán en ese servicio de ahora en adelante. Es posible que &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; use el contenido de la pantalla para determinar lo que se puede autocompletar."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"¿Usar %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Desactivar"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Cambiar"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Solo puedes tener 5 servicios activos"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Desactiva al menos 1 servicio para agregar otro"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s usa el contenido de tu pantalla para determinar qué se puede autocompletar."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 6a3c014..295a8cc 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Formas de desbloqueo"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Igual que el bloqueo de pantalla del dispositivo"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"¿Elegir un nuevo bloqueo para el espacio privado?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Bloquear automáticamente"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Bloquear automáticamente el espacio privado"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Bloquear automáticamente el espacio privado"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Puedes bloquear tu espacio privado automáticamente si no has usado el dispositivo durante un tiempo"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Cada vez que el dispositivo se bloquea"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Después de 5 minutos de inactividad"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Toca la esquina inferior derecha del panel táctil para ver más"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocidad del puntero"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Consultar gestos del panel táctil"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Ir a inicio"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Desliza tres dedos hacia arriba en el panel táctil"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Ir atrás"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Esta aplicación podrá usar la batería en segundo plano. Es posible que la batería se agote antes de lo esperado."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Quitar"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancelar"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Cargar por completo"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Comprueba el accesorio de carga"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Más información sobre la carga con adaptadores incompatibles"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Gestor de batería"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automático, completar, autocompletar, datos, llave de acceso, contraseña"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Cambiar"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Abrir"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"No hay nada seleccionado"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Asegúrate de que confías en esta aplicación&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Autocompletar de Google&gt;%1$s&lt;/xliff:g&gt; utiliza el contenido que se muestra en la pantalla para determinar el texto que se puede autocompletar."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;¿Usar &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Las nuevas contraseñas, llaves de acceso y otra información se guardarán aquí a partir de ahora. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; puede usar el contenido que hay en tu pantalla para determinar qué se puede autocompletar."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Servicio preferido para contraseñas, llaves de acceso y autocompletado"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;¿Desactivar todos los servicios?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Las contraseñas, llaves de acceso y otra información guardada no estarán disponibles para autocompletar cuando inicies sesión."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;¿Cambiar tu proveedor de servicios preferido a &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Las nuevas contraseñas, llaves de acceso y otra información se guardarán aquí a partir de ahora. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; puede usar el contenido que hay en tu pantalla para determinar qué se puede autocompletar."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"¿Usar %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Desactivar"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Cambiar"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Solo puedes tener 5 servicios activados"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Desactiva al menos un servicio para añadir otro"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s usa los elementos en pantalla para determinar lo que se puede autocompletar."</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index a4f8b5a..216b4c4 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -438,7 +438,7 @@
     <string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Lisateave kellaga avamise kohta"</string>
     <string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Lisa kell"</string>
     <string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Kella eemaldamine"</string>
-    <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Sõrmejälje ja Näoga avamine"</string>
+    <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Sõrmejälje ja näoga avamine"</string>
     <string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Näo ja sõrmejäljega avamine töö jaoks"</string>
     <string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Seadistamine on vajalik"</string>
     <string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Nägu ja sõrmejäljed on lisatud"</string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Võimalused avamiseks"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Sama mis seadme ekraanilukk"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Kas valida privaatse ruumi jaoks uus lukk?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lukusta automaatselt"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Privaatse ruumi automaatselt lukustamine"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Privaatse ruumi automaatselt lukustamine"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Saate oma privaatse ruumi automaatselt lukustada, kui te pole oma seadet teatud perioodi jooksul kasutanud"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Iga kord, kui seade lukustatakse"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Pärast 5 minutit tegevusetust"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Lisavalikute nägemiseks puudutage puuteplaadi paremat alaosa"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Kursori kiirus"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Õppige puuteplaadi liigutusi"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Avalehele liikumine"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Pühkige puuteplaadil kolme sõrmega üles"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Tagasiliikumine"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"See rakendus saab taustal akut kasutada. Aku võib oodatust varem tühjaks saada."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Eemalda"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Tühista"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Laadi täissaamiseni"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Kontrollige laadimistarvikut"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Lisateave ühildumatu laadimise kohta"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Akuhaldur"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automaatne, täitmine, automaattäide, andmed, pääsuvõti, parool"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Muuda"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Ava"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ühtegi pole valitud"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Veenduge, et rakendus oleks usaldusväärne&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google\'i automaatne täitmine&gt;%1$s&lt;/xliff:g&gt; kasutab automaatse täitmise sisestuse määramiseks ekraanil kuvatut."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Uued paroolid, pääsuvõtmed ja muu teave salvestatakse edaspidi siia. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; võib kasutada teie ekraanil kuvatut, et otsustada, millise osa saab automaatselt täita."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Paroolide, pääsuvõtmete ja automaattäite puhul eelistatud teenus"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Lülitage kõik teenused välja?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Paroolid, pääsuvõtmed ja muu salvestatud teave poole sisselogides automaattäitmiseks saadaval"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Määrake eelistatud teenusepakkujaks &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Uued paroolid, pääsuvõtmed ja muu teave salvestatakse edaspidi siia. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; võib kasutada teie ekraanil kuvatut, et otsustada, millise osa saab automaatselt täita"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Kas kasutada teenust %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Lülita välja"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Muutus"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Sisse võib olla lülitatud ainult viis teenust"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Lülitage vähemalt üks teenus välja, et lisada uus teenus"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s kasutab ekraanil kuvatut, et otsustada, mida saab automaatselt täita."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Peida pleier"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Kuva pleier"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"meedia"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Luba kaamera tarkvaralaiendused"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Lubab kaamera täiustatud funktsioonide (nt vaegnägijate videograafia) vaiketarkvararakenduse."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth lülitub sisse"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-id"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 5bfa7ee..659a89f 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Desblokeatzeko moduak"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Gailuaren pantailaren blokeo bera"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Eremu pribatua blokeatzeko modua aldatu nahi duzu?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Blokeatu automatikoki"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Blokeatu eremu pribatua automatikoki"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Blokeatu eremu pribatua automatikoki"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Gailua epe jakin batean erabili ez baduzu, eremu pribatua automatikoki blokeatzea aukera dezakezu"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Gailua blokeatzen den aldiro"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 minutuz inaktibo egon ondoren"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Eredua"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PINa"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Pasahitza"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Gailua desblokeatzeko modu guztiak kendu nahi dituzu?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Profilaren babes-sistema kendu nahi duzu?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Ereduak babestu egiten du telefonoa hura galtzen baduzu edo lapurtzen badizute"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Ereduak babestu egiten du telefonoa hura galtzen baduzu edo lapurtzen badizute.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Gailuan gordetako hatz-markaren eredua ezabatuko da. Halaber, aurpegi-eredua modu seguruan eta betiko ezabatuko da. Ezingo duzu erabili aurpegia edo hatz-marka aplikazioetan autentifikatzeko."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PINak babestu egiten du telefonoa hura galtzen baduzu edo lapurtzen badizute"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Gordetako datuak galduko dituzu, hala nola PINa.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kontakturik gabe ordaintzeko konfiguratutako txartelak kendu egingo dira.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Baliteke diru-zorroek eta gailua desblokeatzea behar duten beste aplikazio batzuek behar bezala ez funtzionatzea."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PINak babestu egiten du telefonoa hura galtzen baduzu edo lapurtzen badizute.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Gailuan gordetako hatz-markaren eredua ere ezabatuko da. Ezingo duzu erabili hatz-marka aplikazioetan autentifikatzeko."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Gordetako datuak galduko dituzu, hala nola PINa eta hatz-markaren eredua.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kontakturik gabe ordaintzeko konfiguratutako txartelak kendu egingo dira.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Baliteke diru-zorroek eta gailua desblokeatzea behar duten beste aplikazio batzuek behar bezala ez funtzionatzea."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PINak babestu egiten du telefonoa hura galtzen baduzu edo lapurtzen badizute.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Halaber, aurpegi-eredua modu seguruan eta betiko ezabatuko da. Ezingo duzu erabili aurpegia aplikazioetan autentifikatzeko."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Gordetako datuak galduko dituzu, hala nola PINa eta aurpegi-eredua.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kontakturik gabe ordaintzeko konfiguratutako txartelak kendu egingo dira.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Baliteke diru-zorroek eta gailua desblokeatzea behar duten beste aplikazio batzuek behar bezala ez funtzionatzea."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PINak babestu egiten du telefonoa hura galtzen baduzu edo lapurtzen badizute.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Gailuan gordetako hatz-markaren eredua ere ezabatuko da. Halaber, aurpegi-eredua modu seguruan eta betiko ezabatuko da. Ezingo duzu erabili aurpegia edo hatz-marka aplikazioetan autentifikatzeko."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Gordetako datuak galduko dituzu, hala nola PINa, aurpegi-eredua eta hatz-markaren eredua.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kontakturik gabe ordaintzeko konfiguratutako txartelak kendu egingo dira.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Baliteke diru-zorroek eta gailua desblokeatzea behar duten beste aplikazio batzuek behar bezala ez funtzionatzea."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Pasahitzak babestu egiten du telefonoa hura galtzen baduzu edo lapurtzen badizute"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Pasahitzak babestu egiten du telefonoa hura galtzen baduzu edo lapurtzen badizute.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Aukera gehiago ikusteko, sakatu ukipen-panelaren beheko eskuinaldeko izkina"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Erakuslearen abiadura"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Lortu ukipen-panelean erabiltzeko keinuei buruzko informazioa"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Hasierako pantailara joan"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Ukipen-panelean, pasatu hiru hatz gora"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Atzera egin"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Atzeko planoan exekutatu arren, baliteke aplikazio honek bateria erabiltzea. Horregatik, baliteke espero baino lehenago agortzea bateria."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Kendu"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Utzi"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Kargatu guztiz"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Eman begiratu bat kargatzeko osagarriari"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Lortu kargatze bateraezinei buruzko informazio gehiago"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Bateria-kudeatzailea"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatikoa, bete, betetze automatikoa, datuak, sarbide-gakoa, pasahitza"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Aldatu"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Ireki"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ez da hautatu bat ere"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Ziurtatu aplikazioa fidagarria dela&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; aplikazioak pantailan dagoena erabiltzen du automatikoki bete daitekeena zehazteko."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Erabili &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Aurrerantzean, hemen gordeko dira pasahitz, sarbide-gako eta bestelako datu berriak. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; agian pantailako edukian oinarrituko da automatikoki zer bete daitekeen erabakitzeko."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Pasahitzak, sarbide-gakoak eta betetze automatikoa kudeatzeko zerbitzu hobetsia"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Zerbitzu guztiak desaktibatu nahi dituzu?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Pasahitzak, sarbide-gakoak eta gordetako bestelako datuak ezingo dira automatikoki bete saioa hasten duzunean."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Zerbitzu hobetsia aldatu eta &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ezarri nahi duzu?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Aurrerantzean, hemen gordeko dira pasahitz, sarbide-gako eta bestelako datu berriak. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; agian pantailako edukian oinarrituko da automatikoki zer bete daitekeen erabakitzeko."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s erabili nahi duzu?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Desaktibatu"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Aldatu"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"5 zerbitzu soilik izan ditzakezu aktibatuta"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Desaktibatu gutxienez zerbitzu bat beste bat gehitzeko"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s zerbitzuak pantailan dagoena erabiltzen du, automatikoki bete daitekeena zehazteko."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ezkutatu erreproduzigailua"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Erakutsi erreproduzigailua"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"multimedia-edukia"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Eman kameraren software-luzapenak erabiltzeko baimena"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Kamera-eginbide aurreratuen softwarea modu lehenetsian inplementatzeko aukera gaitzen du, hala nola pantaila ikusi beharrik gabeko bideografia."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth bidezko konexioa aktibatuko da"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMak"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index ae601de..c1ee37f 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"روش‌های باز کردن قفل"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"یکسان با قفل صفحه دستگاه"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"می‌خواهید قفل جدیدی برای فضای خصوصی انتخاب کنید؟"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"قفل خودکار"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"قفل خودکار فضای خصوصی"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"قفل خودکار فضای خصوصی"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"می‌توانید تنظیم کنید که اگر برای مدتی از دستگاهتان استفاده نکردید، فضای خصوصی شما به‌طور خودکار قفل شود"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"هربار که دستگاه قفل می‌شود"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"پس‌از ۵ دقیقه عدم فعالیت"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"برای گزینه‌های بیشتر، روی پایین گوشه چپ صفحه لمسی ضربه بزنید"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"سرعت اشاره‌گر"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"آشنایی با اشاره‌های صفحه لمسی"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"رفتن به صفحه اصلی"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"هر جایی از صفحه لمسی را با سه انگشت تند به‌بالا بکشید"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"برگشتن"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"این برنامه می‌تواند در پس‌زمینه از باتری استفاده کند. ممکن است شارژ باتری زودتر از حد انتظار تمام شود."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"برداشتن"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"لغو"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"کاملاً شارژ کردن"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"لوازم شارژ را بررسی کنید"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"درباره شارژ ناسازگار بیشتر بدانید"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"مدیر باتری"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"خودکار، تکمیل، تکمیل خودکار، داده، گذرکلید، گذرواژه"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"تغییر دادن"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"باز کردن"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"موردی انتخاب نشده است"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"‏&lt;b&gt;مطمئن شوید به این برنامه اطمینان دارید&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=تکمیل خودکار Google&gt;%1$s&lt;/xliff:g&gt; برای تعیین آنچه که می‌تواند به‌طور خودکار تکمیل شود، از آنچه روی صفحه‌نمایش شما است استفاده می‌کند."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"‏&lt;b&gt;از &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; استفاده شود؟&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ازاین‌پس گذرواژه‌ها، گذرکلیدها، و سایر اطلاعات جدید در اینجا ذخیره خواهد شد. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ممکن است از محتوای صفحه‌نمایش شما استفاده کند تا تشخیص دهد چه چیزهایی را می‌توان به‌طور خودکار تکمیل کرد."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"سرویس ترجیحی برای گذرواژه‌ها، گذرکلیدها، و تکمیل خودکار"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"‏&lt;b&gt;همه سرویس‌ها خاموش شود؟&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; گذرواژه‌ها، گذرکلیدها، و دیگر اطلاعات ذخیره‌شده هنگام ورود به سیستم برای تکمیل خودکار دردسترس نخواهد بود"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"‏&lt;b&gt;سرویس ترجیحی‌تان به &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; تغییر کند؟&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ازاین‌پس، گذرواژه‌ها و گذرکلیدهای جدید و دیگر اطلاعات اینجا ذخیره خواهد شد. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ممکن است از محتوای صفحه‌نمایش شما استفاده کند تا تشخیص دهد چه چیزهایی را می‌توان به‌طور خودکار تکمیل کرد"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"‏از %1$s استفاده شود؟"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"خاموش کردن"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"تغییر دادن"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"فقط می‌توانید ۵ سرویس روشن داشته باشید"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"حداقل ۱ سرویس را خاموش کنید تا بتوانید سرویس دیگری اضافه کنید"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"‏%1$s از محتوای روی صفحه شما استفاده می‌کند تا تشخیص دهد چه چیزهایی را می‌توان به‌طور خودکار تکمیل کرد."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"پنهان کردن پخش‌کننده"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"نمایش دادن پخش‌کننده"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"رسانه‌"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"مجاز کردن افزونه‌های نرم‌افزار دوربین"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"پیاده‌سازی نرم‌افزار پیش‌فرض مرتبط با ویژگی‌های پیشرفته دوربین را (مثل فیلمبرداری بدون نیاز به نگاه کردن) فعال می‌کند."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"بلوتوث روشن می‌شود"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"اینترنت"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"سیم‌کارت‌ها"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 1b2bde9..b82fa5b 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -300,7 +300,7 @@
     <string name="safety_center_summary" msgid="3554867379951053869">"Sovellusten turvallisuus, laitteen lukitus, luvat"</string>
     <string name="security_settings_face_preference_summary" msgid="6675126437396914838">"Kasvot lisätty"</string>
     <string name="security_settings_face_preference_summary_none" msgid="523320857738436024">"Edellyttää käyttöönottoa"</string>
-    <string name="security_settings_face_preference_title" msgid="2126625155005348417">"Kasvojentunnistus- avaus"</string>
+    <string name="security_settings_face_preference_title" msgid="2126625155005348417">"Kasvojentunnistusavaus"</string>
     <string name="security_settings_face_profile_preference_title" msgid="7519527436266375005">"Kasvojentunnistusavaus työkäyttöön"</string>
     <string name="security_settings_face_enroll_education_title" msgid="6448806884597691208">"Kasvojentunnistusavauksen käyttöönotto"</string>
     <string name="security_settings_face_enroll_education_title_accessibility" msgid="3701874093226957891">"Ota kasvojentunnistusavaus käyttöön"</string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Tapoja avata lukitus"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Sama kuin laitteen näytön lukitus"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Valitaanko yksityiselle tilalle uusi lukitus?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lukitse automaattisesti"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Lukitse yksityinen tila automaattisesti"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Lukitse yksityinen tila automaattisesti"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Voit lukita yksityisen tilan automaattisesti, jos et ole käyttänyt laitettasi hetkeen"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Aina kun laite lukittuu"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 minuutin toimettomuuden jälkeen"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Kuvio"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN-koodi"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Salasana"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Poistetaanko kaikki laitteen lukituksen avaamisvaihtoehdot?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Poistetaanko profiilin suojaus?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Kuvio suojaa puhelintasi, jos se katoaa tai varastetaan"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Kuvio suojaa puhelintasi, jos se katoaa tai varastetaan.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Tämä poistaa laitteelle tallennetun sormenjälkimallin. Kasvomalli poistetaan myös pysyvästi ja turvallisesti. Et voi käyttää kasvojasi tai sormenjälkeäsi sovelluksissa todentamiseen."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN-koodi suojaa puhelintasi, jos se katoaa tai varastetaan"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Menetät tallennettua dataa, esimerkiksi PIN-koodin.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Lähimaksamiseen käytettävät kortit poistetaan.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Lompakot ja muut lukituksen avaamista edellyttävät sovellukset eivät välttämättä toimi oikein."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN-koodi suojaa puhelintasi, jos se katoaa tai varastetaan.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Tämä poistaa myös laitteelle tallennetun sormenjälkimallin. Et voi käyttää sormenjälkeäsi sovelluksissa todentamiseen."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Menetät tallennettua dataa, esimerkiksi PIN-koodin ja sormenjälkimallin.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Lähimaksamiseen käytettävät kortit poistetaan.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Lompakot ja muut lukituksen avaamista edellyttävät sovellukset eivät välttämättä toimi oikein."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN-koodi suojaa puhelintasi, jos se katoaa tai varastetaan.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Kasvomalli poistetaan myös pysyvästi ja turvallisesti. Et voi käyttää kasvojasi sovelluksissa todentamiseen."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Menetät tallennettua dataa, esimerkiksi PIN-koodin ja kasvomallin.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Lähimaksamiseen käytettävät kortit poistetaan.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Lompakot ja muut lukituksen avaamista edellyttävät sovellukset eivät välttämättä toimi oikein."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN-koodi suojaa puhelintasi, jos se katoaa tai varastetaan.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Tämä poistaa laitteelle tallennetun sormenjälkimallin. Kasvomalli poistetaan myös pysyvästi ja turvallisesti. Et voi käyttää kasvojasi tai sormenjälkeäsi sovelluksissa todentamiseen."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Menetät tallennettua dataa, esimerkiksi PIN-koodin, kasvo- ja sormenjälkimallin.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Lähimaksamiseen käytettävät kortit poistetaan.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Lompakot ja muut lukituksen avaamista edellyttävät sovellukset eivät välttämättä toimi oikein."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Salasana suojaa puhelintasi, jos se katoaa tai varastetaan"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Salasana suojaa puhelintasi, jos se katoaa tai varastetaan.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Lisäasetukset: napauta kosketuslevyn oikeaa alareunaa"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Osoittimen nopeus"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Opettele kosketuslevyn eleitä"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Siirry aloitusnäytölle"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Pyyhkäise ylös 3 sormella mistä tahansa kosketuslevyllä"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Takaisin"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Tämä sovellus voi käyttää akkua taustalla, joten akku saattaa loppua odotettua aiemmin."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Poista"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Peru"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Lataa akku täyteen"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Tarkista latauslisävaruste"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Lue lisää yhteensopimattomasta latauksesta"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Virranhallinta"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automaattinen, täyttö, automaattinen täyttö, data, avainkoodi, salasana"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Muuta"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Avaa"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Mitään ei ole valittu"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Varmista, että luotat tähän sovellukseen&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; päättelee näytöllä olevien kohteiden perusteella, mitä voidaan täyttää automaattisesti."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Palveluntarjoaja&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Uudet salasanat, avainkoodit ja muut tiedot tallennetaan nyt tänne. &lt;xliff:g id=app_name example=Palveluntarjoaja&gt;%1$s&lt;/xliff:g&gt; voi päätellä näytön näkymän perusteella, mitä voidaan täyttää automaattisesti."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Ensisijainen palvelu salasanoille, avainkoodeille ja automaattiselle täytölle"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Laita kaikki palvelut pois päältä?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Salasanat, avainkoodit ja muut tiedot eivät ole saatavilla automaattista täyttöä varten kirjautuessasi sisään"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Vaihda haluamaksesi palveluksi: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Uudet salasanat, avainkoodit ja muut tiedot tallennetaan nyt tänne. &lt;xliff:g id=app_name example=Palveluntarjoaja&gt;%1$s&lt;/xliff:g&gt; voi päätellä näytön näkymän perusteella, mitä voidaan täyttää automaattisesti."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Käytetäänkö: %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Laita pois päältä"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Muuta"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Sinulla voi olla samaan aikaan vain viisi palvelua päällä"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Laita vähintään yksi palvelu pois päältä, jotta voit lisätä toisen"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s päättelee näytön kohteiden perusteella, mitä voidaan täyttää automaattisesti."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Piilota soitin"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Näytä soitin"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Salli kameraohjelmistolaajennukset"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Ottaa käyttöön kameran lisäominaisuuksien (esim. puheohjatun videokuvauksen) oletusohjelmistot"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth käynnistyy"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-kortit"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 969f951..9c816f9 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Méthodes de déverrouillage"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Identique au verrouillage de l\'écran de l\'appareil"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Choisir un nouveau verrou pour l\'Espace privé?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Verrouiller automatiquement"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Verrouiller automatiquement l\'Espace privé"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Verrouiller automatiquement l\'Espace privé"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Vous pouvez verrouiller automatiquement votre Espace privé si vous n\'avez pas utilisé votre appareil pendant un certain temps"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Chaque fois que l\'appareil se verrouille"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Après cinq minutes d\'inactivité"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Schéma"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"NIP"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Mot de passe"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Retirer tous les types de déverrouillage de l\'appareil?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Supprimer la protection du profil?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Un schéma protège votre téléphone en cas de perte ou de vol"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Un schéma protège votre téléphone en cas de perte ou de vol.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Cette fonctionnalité supprime le modèle d\'empreinte digitale stocké sur votre appareil. Votre modèle facial sera également supprimé définitivement de façon sécurisée. Vous ne pourrez pas utiliser votre visage ni votre empreinte digitale pour vous authentifier dans les applications."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Un NIP protège votre téléphone en cas de perte ou de vol"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Vous perdrez des données enregistrées, comme votre NIP.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Les cartes configurées pour le Paiement sans contact seront retirées.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Les portefeuilles et autres applications qui nécessitent le déverrouillage de l\'appareil peuvent ne pas fonctionner correctement."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Un NIP protège votre téléphone en cas de perte ou de vol.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Cette fonctionnalité supprime également le modèle d\'empreinte digitale stocké sur votre appareil. Vous ne pourrez pas utiliser votre empreinte digitale pour vous authentifier dans les applications."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Vous perdrez des données enregistrées, comme votre NIP et votre modèle d\'empreinte digitale.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Les cartes configurées pour le Paiement sans contact seront retirées.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Les portefeuilles et autres applications qui nécessitent le déverrouillage de l\'appareil peuvent ne pas fonctionner correctement."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Un NIP protège votre téléphone en cas de perte ou de vol.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Votre modèle facial sera également supprimé définitivement de façon sécurisée. Vous ne pourrez pas utiliser votre visage pour vous authentifier dans les applications."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Vous perdrez des données enregistrées, comme votre NIP et votre modèle facial.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Les cartes configurées pour le Paiement sans contact seront retirées.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Les portefeuilles et autres applications qui nécessitent le déverrouillage de l\'appareil peuvent ne pas fonctionner correctement."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Un NIP protège votre téléphone en cas de perte ou de vol.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Cette fonctionnalité supprime le modèle d\'empreinte digitale stocké sur votre appareil. Votre modèle facial sera également supprimé définitivement de façon sécurisée. Vous ne pourrez pas utiliser votre visage ni votre empreinte digitale pour vous authentifier dans les applications."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Vous perdrez des données enregistrées, comme votre NIP, et votre modèle facial et d\'empreinte digitale.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Les cartes configurées pour le Paiement sans contact seront retirées.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Les portefeuilles et autres applications qui nécessitent le déverrouillage de l\'appareil peuvent ne pas fonctionner correctement."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Un mot de passe protège votre téléphone en cas de perte ou de vol"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Un mot de passe protège votre téléphone en cas de perte ou de vol.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Touch. coin inférieur droit (pavé tactile) pour plus d\'options"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Vitesse du pointeur"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Apprendre les gestes du pavé tactile"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Retour à la page d\'accueil"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Balayez votre pavé tactile vers le haut avec trois doigts"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Retour"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Cette application pourra utiliser la pile en arrière-plan. Cela pourrait épuiser la pile plus rapidement."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Supprimer"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Annuler"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Recharger complètement"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Vérifier l\'accessoire de recharge"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"En savoir plus sur les chargeurs incompatibles"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Gestionnaire de pile"</string>
@@ -3829,9 +3844,9 @@
     <string name="assist_access_context_title" msgid="5201495523514096201">"Utiliser le texte affiché à l\'écran"</string>
     <string name="assist_access_context_summary" msgid="6951814413185646275">"Autoriser l\'application d\'assistance à accéder au contenu affiché à l\'écran sous forme de texte"</string>
     <string name="assist_access_screenshot_title" msgid="4395902231753643633">"Utiliser la saisie d\'écran"</string>
-    <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Autoriser l\'application d\'assistance à accéder au contenu affiché à l\'écran sous forme d\'image"</string>
+    <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Autorisez l\'application d\'assistance à accéder au contenu affiché à l\'écran sous forme d\'image"</string>
     <string name="assist_flash_title" msgid="5449512572885550108">"Faire clignoter l\'écran"</string>
-    <string name="assist_flash_summary" msgid="3032289860177784594">"Faire clignoter les bordures de l\'écran lorsque l\'application d\'assistance accède à du texte à partir de l\'écran ou d\'une capture d\'écran"</string>
+    <string name="assist_flash_summary" msgid="3032289860177784594">"Faites clignoter les bordures de l\'écran lorsque l\'application d\'assistance accède à du texte à partir de l\'écran ou d\'une capture d\'écran"</string>
     <string name="assist_footer" msgid="8248015363806299068">"Les applications d\'assistance peuvent vous aider en fonction de l\'information affichée à l\'écran. Certaines applications sont compatibles à la fois avec le lanceur d\'applications et les services d\'entrée vocale, vous permettant de bénéficier d\'une assistance intégrée."</string>
     <string name="average_memory_use" msgid="717313706368825388">"Utilisation moyenne de la mémoire"</string>
     <string name="maximum_memory_use" msgid="2171779724001152933">"Utilisation max. de la mémoire"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatique, remplissage, remplissage automatique, données, clé d\'accès, mot de passe"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Modifier"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Ouvrir"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Aucun élément sélectionné"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Assurez-vous de faire confiance à cette application&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Remplissage automatique&gt;%1$s&lt;/xliff:g&gt; utilise les éléments affichés à l\'écran pour déterminer les champs qui peuvent bénéficier de l\'entrée automatique."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Les nouveaux mots de passe, clés d\'accès et autres renseignements seront désormais enregistrés ici. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; peut utiliser ce qui se trouve à l\'écran pour déterminer les données qui peuvent être remplies automatiquement."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Fournisseur de services préféré pour les mots de passe, les clés d\'accès et le remplissage automatique"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Désactiver tous les services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Les mots de passe, les clés d\'accès et les autres renseignements enregistrés ne seront pas accessibles pour le Remplissage automatique lorsque vous vous connectez"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Modifiez votre service préféré pour &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Les nouveaux renseignements, notamment les clés d\'accès et les mots de passe, seront dorénavant enregistrés ici. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; peut utiliser ce qui se trouve à l\'écran pour déterminer les renseignements qui peuvent être remplis automatiquement"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Utiliser %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Désactiver"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Modifier"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Vous ne pouvez avoir que cinq services sur"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Désactivez au moins un service pour en ajouter un autre"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s se sert des données affichées à l\'écran pour déterminer ce qui peut être rempli automatiquement."</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 27803f4..165bf1f 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Méthodes de déverrouillage"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Comme pour verrouiller l\'écran de l\'appareil"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Choisir un nouveau verrouillage d\'espace privé ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Verrouiller automatiquement"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Verrouiller l\'espace privé automatiquement"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Verrouiller l\'espace privé automatiquement"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Vous avez la possibilité de verrouiller votre espace privé automatiquement lorsque vous n\'utilisez pas votre appareil pendant un certain temps"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"À chaque verrouillage de l\'appareil"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Après 5 minutes d\'inactivité"</string>
@@ -807,7 +806,7 @@
     <string name="bluetooth_device_context_disconnect" msgid="4464167389972513232">"Déconnecter"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"Associer et connecter"</string>
     <string name="bluetooth_empty_list_bluetooth_off" msgid="7326727272747345476">"Bluetooth activé : Votre appareil communique avec d\'autres appareils à proximité."</string>
-    <string name="bluetooth_scanning_on_info_message" msgid="786648535600075223">"Quand le Bluetooth est activé, votre appareil peut communiquer avec d\'autres appareils Bluetooth à proximité.\n\nQuand il ne l\'est pas, les applis et services peuvent quand même rechercher les appareils à proximité à tout moment, afin d\'améliorer l\'expérience, par exemple, les fonctionnalités et services géolocalisés. Vous pouvez modifier ce réglage dans les paramètres de recherche Bluetooth."</string>
+    <string name="bluetooth_scanning_on_info_message" msgid="786648535600075223">"Quand le Bluetooth est activé, votre appareil peut communiquer avec d\'autres appareils Bluetooth à proximité.\n\nQuand il ne l\'est pas, les applis et services peuvent quand même rechercher les appareils à proximité à tout moment, afin d\'améliorer l\'expérience, par exemple, les fonctionnalités et services basés sur la localisation. Vous pouvez modifier ce réglage dans les paramètres de recherche Bluetooth."</string>
     <string name="bluetooth_scan_change" msgid="1744636222637390367">"Modifier"</string>
     <string name="device_details_title" msgid="1155622417516195481">"Infos sur l\'appareil"</string>
     <string name="bluetooth_device_keyboard_settings_preference_title" msgid="3411693160917620519">"Paramètres du clavier"</string>
@@ -886,7 +885,7 @@
     <string name="wifi_wakeup_summary" msgid="5778059083790221465">"Le Wi‑Fi se réactivera à proximité des réseaux haute qualité enregistrés, par ex. le réseau de votre domicile"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="681323616606485096">"Indisponible, car le service de localisation est désactivé. Activez la "<annotation id="link">"localisation"</annotation>"."</string>
     <string name="wifi_install_credentials" msgid="5192903644606839972">"Installer les certificats"</string>
-    <string name="wifi_scan_notify_text" msgid="7163137260385995873">"Pour mieux vous localiser, les applis et services peuvent continuer de rechercher les réseaux Wi-Fi, même quand le Wi-Fi est désactivé. Cela peut servir, par exemple, à améliorer les fonctionnalités et services géolocalisés. Vous pouvez modifier ce réglage dans les <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>paramètres de recherche Wi-Fi<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
+    <string name="wifi_scan_notify_text" msgid="7163137260385995873">"Pour mieux vous localiser, les applis et services peuvent continuer de rechercher les réseaux Wi-Fi, même quand le Wi-Fi est désactivé. Cela peut servir, par exemple, à améliorer les fonctionnalités et services basés sur la localisation. Vous pouvez modifier ce réglage dans les <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>paramètres de recherche Wi-Fi<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
     <string name="wifi_scan_notify_text_scanning_off" msgid="7439201783168213149">"Pour une localisation plus précise, activez la recherche Wi-Fi dans les <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>paramètres de recherche Wi‑Fi<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
     <string name="wifi_cellular_data_fallback_title" msgid="2844653839490977040">"Se connecter automatiquement au réseau de données mobiles"</string>
     <string name="wifi_cellular_data_fallback_summary" msgid="7039944853033554386">"Les données mobiles sont utilisées si vous n\'avez pas accès à Internet via le réseau Wi‑Fi. Des frais liés à la consommation des données peuvent s\'appliquer."</string>
@@ -900,7 +899,7 @@
     <string name="wifi_empty_list_user_restricted" msgid="454861411536708709">"Vous n\'avez pas l\'autorisation de modifier le réseau Wi‑Fi."</string>
     <string name="wifi_settings_scanning_required_title" msgid="1088663325396007484">"Activer la recherche Wi-Fi ?"</string>
     <string name="wifi_settings_scanning_required_summary" msgid="4770243653675416569">"Pour activer automatiquement le Wi‑Fi, vous devez d\'abord activer la recherche Wi‑Fi."</string>
-    <string name="wifi_settings_scanning_required_info" msgid="1473411566072565789">"La recherche Wi-Fi autorise les applis et les services à rechercher des réseaux Wi-Fi à tout moment, même si le Wi-Fi est désactivé. Ce réglage peut, par exemple, servir à améliorer les fonctionnalités et les services géolocalisés."</string>
+    <string name="wifi_settings_scanning_required_info" msgid="1473411566072565789">"La recherche Wi-Fi autorise les applis et les services à rechercher des réseaux Wi-Fi à tout moment, même si le Wi-Fi est désactivé. Ce réglage peut, par exemple, servir à améliorer les fonctionnalités et les services basés sur la localisation."</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="1112223196123955447">"Activer"</string>
     <string name="wifi_settings_scanning_required_enabled" msgid="4721729158927146365">"Recherche Wi-Fi activée"</string>
     <string name="wifi_settings_warning_wep_network" msgid="2655077013800385646">"Ce réseau utilise un ancien protocole de sécurité moins sécurisé"</string>
@@ -1537,9 +1536,9 @@
     <string name="location_high_battery_use" msgid="4277318891200626524">"Forte utilisation de la batterie"</string>
     <string name="location_low_battery_use" msgid="5218950289737996431">"Faible utilisation de batterie"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Recherche Wi‑Fi"</string>
-    <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Autorisez les applis et les services à rechercher des réseaux Wi-Fi à tout moment, même si le Wi-Fi est désactivé. Cela peut permettre, par exemple, d\'améliorer les fonctionnalités et les services géolocalisés."</string>
+    <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Autorisez les applis et les services à rechercher des réseaux Wi-Fi à tout moment, même si le Wi-Fi est désactivé. Cela peut permettre, par exemple, d\'améliorer les fonctionnalités et les services basés sur la localisation."</string>
     <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Recherche Bluetooth"</string>
-    <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Autorisez les applis et les services à rechercher des appareils à proximité à tout moment, même si le Bluetooth est désactivé. Cela peut permettre, par exemple, d\'améliorer les fonctionnalités et les services géolocalisés."</string>
+    <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Autorisez les applis et les services à rechercher des appareils à proximité à tout moment, même si le Bluetooth est désactivé. Cela peut permettre, par exemple, d\'améliorer les fonctionnalités et les services basés sur la localisation."</string>
     <string name="location_services_preference_title" msgid="604317859531782159">"Services de localisation"</string>
     <string name="location_services_screen_title" msgid="5640002489976602476">"Services de localisation"</string>
     <string name="location_time_zone_detection_toggle_title" msgid="6478751613645015287">"Utiliser la position"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Appuyez en bas à droite du pavé tactile pour plus d\'options"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Vitesse du pointeur"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Découvrir gestes au pavé tactile"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Retour à l\'accueil"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Balayez vers le haut avec trois doigts sur le pavé tactile"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Retour"</string>
@@ -2103,7 +2106,7 @@
     <string name="accessibility_button_gesture_description" msgid="1141723096904904336">"&lt;b&gt;Pour démarrer&lt;/b&gt;&lt;br/&gt; {0,number,integer}. Accédez aux paramètres d\'accessibilité&lt;br/&gt; {1,number,integer}. Sélectionnez une fonctionnalité et appuyez sur le raccourci&lt;br/&gt; {2,number,integer}. Précisez si vous souhaitez utiliser un bouton ou un geste pour accéder au paramètre&lt;br/&gt;."</string>
     <string name="accessibility_button_description" msgid="7669538706120092399">"&lt;b&gt;Pour démarrer&lt;/b&gt;&lt;br/&gt; {0,number,integer}. Accédez aux paramètres d\'accessibilité&lt;br/&gt; {1,number,integer}. Sélectionnez une fonctionnalité et appuyez sur le raccourci&lt;br/&gt; {2,number,integer}. Choisissez le bouton pour accéder à cette fonctionnalité&lt;br/&gt;."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Utiliser le bouton ou le geste"</string>
-    <string name="accessibility_button_location_title" msgid="7182107846092304942">"Emplacement"</string>
+    <string name="accessibility_button_location_title" msgid="7182107846092304942">"Position"</string>
     <string name="accessibility_button_size_title" msgid="5785110470538960881">"Taille"</string>
     <string name="accessibility_button_fade_title" msgid="8081993897680588829">"Disparaît s\'il n\'est pas utilisé"</string>
     <string name="accessibility_button_fade_summary" msgid="7865950833524973709">"Disparaît après quelques secondes pour que vous puissiez mieux voir l\'écran"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Cette application pourra utiliser la batterie en arrière-plan. Il se peut que vous arriviez à court de batterie plus vite que prévu."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Supprimer"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Annuler"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Recharger complètement"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Vérifier l\'accessoire de recharge"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"En savoir plus sur la recharge incompatible"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Gestionnaire de batterie"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, remplir, remplir automatiquement, données, clé d\'accès, mot de passe"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Modifier"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Ouvrir"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Aucun élément sélectionné"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Assurez-vous que cette appli est fiable&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; se sert de ce qui figure à l\'écran pour déterminer ce qui peut être saisi automatiquement."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Utilisez &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Les nouveaux mots de passe, clés d\'accès et autres infos seront désormais enregistrés ici. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; peut utiliser ce qui est affiché à l\'écran pour déterminer ce qui peut être saisi automatiquement."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Fournisseur de service préféré pour la gestion des mots de passe, des clés d\'accès et de la saisie automatique"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Désactiver tous les services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Les mots de passe, clés d\'accès ainsi que d\'autres informations sauvegardées ne bénéficieront pas de la saisie automatique lors de la connexion"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Modifiez votre service préféré pour &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; À partir de maintenant, les nouveaux mots de passe, les clés d\'accès ainsi que d\'autres éléments seront stockés ici. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; peut utiliser ce qui est affiché à l\'écran pour déterminer ce qui peut être saisi automatiquement"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Utiliser %1$s ?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Désactiver"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Modifier"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Seuls cinq services peuvent être activés"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Désactivez au moins un service pour pouvoir en ajouter un autre"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s utilise ce qui est affiché à l\'écran pour déterminer ce qui peut être saisi automatiquement."</string>
@@ -4797,7 +4802,7 @@
     <string name="default_active_sim_calls" msgid="2390973682556353558">"appels"</string>
     <string name="default_active_sim_sms" msgid="8041498593025994921">"SMS"</string>
     <string name="default_active_sim_mobile_data" msgid="6798083892814045301">"données mobiles"</string>
-    <string name="wifi_scan_notify_message" msgid="1331238142061476869">"Pour améliorer l\'expérience sur l\'appareil, les applis et services peuvent continuer de rechercher les réseaux Wi-Fi, même quand le Wi-Fi est désactivé. Cela peut servir, par exemple, à améliorer les fonctionnalités et services géolocalisés. Vous pouvez modifier cela dans les paramètres de recherche Wi-Fi."</string>
+    <string name="wifi_scan_notify_message" msgid="1331238142061476869">"Pour améliorer l\'expérience sur l\'appareil, les applis et services peuvent continuer de rechercher les réseaux Wi-Fi, même quand le Wi-Fi est désactivé. Cela peut servir, par exemple, à améliorer les fonctionnalités et services basés sur la localisation. Vous pouvez modifier cela dans les paramètres de recherche Wi-Fi."</string>
     <string name="wifi_scan_change" msgid="8438320311511852918">"Modifier"</string>
     <string name="preference_summary_default_combination" msgid="4643585915107796253">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="NETWORKMODE">%2$s</xliff:g>"</string>
     <string name="mobile_data_connection_active" msgid="2422223108911581552">"Connecté"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 84a6d0d..13d159d 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Maneiras de desbloquear o dispositivo"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"O mesmo que o bloqueo de pantalla do dispositivo"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Queres usar outro bloqueo para o espazo privado?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Bloquear automaticamente"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Bloquear automaticamente o espazo privado"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Bloquear espazo privado automaticamente"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Podes facer que se bloquee automaticamente o teu espazo privado cando leves un tempo sen usar o dispositivo"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Cada vez que se bloquee o dispositivo"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Despois de 5 minutos de inactividade"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Padrón"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Contrasinal"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Queres quitar todos os tipos de desbloqueo do dispositivo?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Queres quitar a protección do perfil?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"O teléfono está protexido por un padrón en caso de perda ou roubo"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"O teléfono está protexido por un padrón en caso de perda ou roubo.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Eliminarase o modelo de impresión dixital almacenado no dispositivo. O teu modelo facial tamén se eliminará de xeito seguro e permanente. Non poderás utilizar a cara nin a impresión dixital para autenticarte nas aplicacións."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"O teléfono está protexido por un PIN en caso de perda ou roubo"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Perderás os datos gardados, como o PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Quitaranse as tarxetas configuradas para o pago sen contacto.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Pode que as aplicacións de carteira e outras que requiran o desbloqueo do dispositivo non funcionen correctamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"O teléfono está protexido por un PIN en caso de perda ou roubo.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Tamén se eliminará o modelo de impresión dixital almacenado no dispositivo. Non poderás utilizar a impresión dixital para autenticarte nas aplicacións."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Perderás os datos gardados, como o PIN e o modelo de impresión dixital.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Quitaranse as tarxetas configuradas para o pago sen contacto.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Pode que as aplicacións de carteira e outras que requiran o desbloqueo do dispositivo non funcionen correctamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"O teléfono está protexido por un PIN en caso de perda ou roubo.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>O teu modelo facial tamén se eliminará de xeito seguro e permanente. Non poderás utilizar a cara para autenticarte nas aplicacións."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Perderás os datos gardados, como o PIN e o modelo facial.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Quitaranse as tarxetas configuradas para o pago sen contacto.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Pode que as aplicacións de carteira e outras que requiran o desbloqueo do dispositivo non funcionen correctamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"O teléfono está protexido por un PIN en caso de perda ou roubo.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Eliminarase o modelo de impresión dixital almacenado no dispositivo. O teu modelo facial tamén se eliminará de xeito seguro e permanente. Non poderás utilizar a cara nin a impresión dixital para autenticarte nas aplicacións."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Perderás os datos gardados, como o PIN e os modelos de impresión dixital e facial.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Quitaranse as tarxetas configuradas para o pago sen contacto.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Pode que as aplicacións de carteira e outras que requiran o desbloqueo do dispositivo non funcionen correctamente."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"O teléfono está protexido por un contrasinal en caso de perda ou roubo"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"O teléfono está protexido por un contrasinal en caso de perda ou roubo.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Toca a esquina inferior dereita do panel para máis opcións"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocidade do punteiro"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Descubrir xestos no panel táctil"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Ir a Inicio"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Pasa 3 dedos cara arriba en calquera parte do panel táctil"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Atrás"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Esta aplicación poderá utilizar a batería en segundo plano e provocar que quedes sen ela antes do esperado."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Quitar"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancelar"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Cargar ao máximo"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Comproba os accesorios de carga"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Máis información sobre a carga non compatible"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Xestor de batería"</string>
@@ -4308,17 +4323,18 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automático, completar, autocompletar, datos, clave de acceso, contrasinal"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Cambiar"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Abrir"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ningún elemento seleccionado"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Asegúrate de que confías nesta aplicación&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Autocompletar de Google&gt;%1$s&lt;/xliff:g&gt; utiliza o contido da pantalla para determinar o que se pode completar."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Utilizas &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; A partir de agora, determinada información nova (contrasinais, claves de acceso e outros datos) gardarase aquí. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pode usar o que apareza na pantalla para determinar o que se pode autocompletar."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Servizo preferido para contrasinais, claves de acceso e autocompletar"</string>
     <string name="credman_confirmation_message_title" msgid="8847900085593880729">"Queres desactivar %1$s?"</string>
     <string name="credman_confirmation_message" msgid="2357324543658635239">"&lt;b&gt;Queres desactivar este servizo?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; A información gardada (por exemplo, contrasinais, claves de acceso, métodos de pago…) non se completará cando inicies sesión. Para usar a información gardada, escolle un servizo de contrasinais, claves de acceso ou datos."</string>
-    <string name="account_dashboard_title_with_passkeys" msgid="6214673787161409996">"Contrasinais, claves acceso, autocompl."</string>
+    <string name="account_dashboard_title_with_passkeys" msgid="6214673787161409996">"Contrasinais, claves e autocompletar"</string>
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Queres desactivar todos os servizos?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Os contrasinais, as claves de acceso e outros datos gardados non estarán dispoñibles para a función de autocompletar cando inicies sesión"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Cambia o teu servizo favorito a &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; A partir de agora, determinada información nova (contrasinais, claves de acceso e outros datos) gardarase aquí. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pode usar o que apareza na pantalla para determinar o que se pode autocompletar"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Queres usar %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Desactivar"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Cambiar"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Só podes ter 5 servizos activados"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Desactiva polo menos 1 servizo para poder engadir outro"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s usa o que aparece na pantalla para determinar o que se pode completar."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ocultar reprodutor"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Mostrar reprodutor"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"contido multimedia"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Permitir extensións de software da cámara"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Activa a implementación do software predeterminado das funcións avanzadas da cámara, como a videografía para persoas con dificultades visuais."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Activarase o Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Tarxetas SIM"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index b64be85..2bfe5ef 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"અનલૉક કરવાની રીતો"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ડિવાઇસના સ્ક્રીન લૉક જેવું જ લૉક"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ખાનગી સ્પેસ માટે નવું લૉક પસંદ કરીએ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ઑટોમૅટિક રીતે લૉક કરો"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ખાનગી સ્પેસ ઑટોમૅટિક રીતે લૉક કરો"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ખાનગી સ્પેસ ઑટોમૅટિક રીતે લૉક કરો"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"જો તમે અમુક સમય માટે તમારા ડિવાઇસનો ઉપયોગ ન કર્યો હોય તો તમે તમારી ખાનગી સ્પેસ ઑટોમૅટિક રીતે લૉક કરી શકો છો"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"દર વખતે જ્યારે ડિવાઇસ લૉક થાય ત્યારે"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 મિનિટની નિષ્ક્રિયતા પછી"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"પૅટર્ન"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"પિન"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"પાસવર્ડ"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"શું બધા પ્રકારના ડિવાઇસ અનલૉક કાઢી નાખીએ?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"પ્રોફાઇલ સુરક્ષા દૂર કરીએ?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"જો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખી શકે છે"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"જો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખી શકે છે.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>આમ કરવાથી તમારા ડિવાઇસ પર સ્ટોર કરેલી ફિંગરપ્રિન્ટનું મૉડલ ડિલીટ થઈ જશે. તમારા ચહેરાનું મૉડલ પણ કાયમ માટે અને સુરક્ષિત રીતે ડિલીટ કરવામાં આવશે. ઍપમાં પ્રમાણીકરણ માટે, તમે તમારા ચહેરા અથવા ફિંગરપ્રિન્ટનો ઉપયોગ કરી શકશો નહીં."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"જો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખી શકે છે"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"તમે સાચવેલો ડેટા ગુમાવશો, જેમ કે તમારો પિન.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>સંપર્ક રહિત ચુકવણી કરવા માટે સેટઅપ કરેલા કાર્ડ કાઢી નાખવામાં આવશે.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>વિવિધ વૉલેટ અને અન્ય ઍપ કે જેને ડિવાઇસ પર અનલૉક કરવી જરૂરી હોય છે, તે બરાબર કામ ન કરે તેમ બની શકે."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"જો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખી શકે છે.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>આમ કરવાથી તમારા ડિવાઇસ પર સ્ટોર કરેલી ફિંગરપ્રિન્ટનું મૉડલ પણ ડિલીટ થઈ જશે. ઍપમાં પ્રમાણીકરણ માટે, તમે તમારી ફિંગરપ્રિન્ટનો ઉપયોગ કરી શકશો નહીં."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"તમે સાચવેલો ડેટા ગુમાવશો, જેમ કે તમારો પિન અને ફિંગરપ્રિન્ટનું મૉડલ.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>સંપર્ક રહિત ચુકવણી કરવા માટે સેટઅપ કરેલા કાર્ડ કાઢી નાખવામાં આવશે.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>વિવિધ વૉલેટ અને અન્ય ઍપ કે જેને ડિવાઇસ પર અનલૉક કરવી જરૂરી હોય છે, તે બરાબર કામ ન કરે તેમ બની શકે."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"જો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખી શકે છે.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>તમારા ચહેરાનું મૉડલ પણ કાયમ માટે અને સુરક્ષિત રીતે ડિલીટ કરવામાં આવશે. ઍપમાં પ્રમાણીકરણ માટે, તમે તમારા ચહેરાનો ઉપયોગ કરી શકશો નહીં."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"તમે સાચવેલો ડેટા ગુમાવશો, જેમ કે તમારો પિન અને ચહેરાનું મૉડલ.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>સંપર્ક રહિત ચુકવણી કરવા માટે સેટઅપ કરેલા કાર્ડ કાઢી નાખવામાં આવશે.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>વિવિધ વૉલેટ અને અન્ય ઍપ કે જેને ડિવાઇસ પર અનલૉક કરવી જરૂરી હોય છે, તે બરાબર કામ ન કરે તેમ બની શકે."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"જો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખી શકે છે.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>આમ કરવાથી તમારા ડિવાઇસ પર સ્ટોર કરેલી ફિંગરપ્રિન્ટનું મૉડલ ડિલીટ થઈ જશે. તમારા ચહેરાનું મૉડલ પણ કાયમ માટે અને સુરક્ષિત રીતે ડિલીટ કરવામાં આવશે. ઍપમાં પ્રમાણીકરણ માટે, તમે તમારા ચહેરા અથવા ફિંગરપ્રિન્ટનો ઉપયોગ કરી શકશો નહીં."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"તમે સાચવેલો ડેટા ગુમાવશો, જેમ કે તમારો પિન, ચહેરાનું મૉડલ અને ફિંગરપ્રિન્ટના મૉડલ.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>સંપર્ક રહિત ચુકવણી કરવા માટે સેટઅપ કરેલા કાર્ડ કાઢી નાખવામાં આવશે.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>વિવિધ વૉલેટ અને અન્ય ઍપ કે જેને ડિવાઇસ પર અનલૉક કરવી જરૂરી હોય છે, તે બરાબર કામ ન કરે તેમ બની શકે."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"જો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખી શકે છે"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"જો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખી શકે છે.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"વધુ વિકલ્પો માટે ટચપૅડ પર સૌથી નીચે જમણા ખૂણે ટૅપ કરો"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"પૉઇન્ટરની ઝડપ"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ટચપૅડના સંકેતો વિશે જાણો"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"હોમ પર જાઓ"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"તમારા ટચપૅડ પર ગમે ત્યાં ત્રણ આંગળી વડે ઉપરની તરફ સ્વાઇપ કરો"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"પાછા જાઓ"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"આ ઍપ બૅકગ્રાઉન્ડમાં બૅટરીનો વપરાશ કરી શકશે. તમારા ડિવાઇસની બૅટરી અપેક્ષા કરતાં વહેલા સમાપ્ત થઈ શકે છે."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"કાઢી નાખો"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"રદ કરો"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"પૂરી ચાર્જ કરો"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ચાર્જિંગ ઍક્સેસરી ચેક કરો"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"અસંગત ચાર્જિંગ વિશે વધુ જાણો"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"બૅટરી મેનેજર"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ઑટો, ભરો, ઑટોમૅટિક રીતે ભરવાની સુવિધા, ડેટા, પાસકી, પાસવર્ડ"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"બદલો"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"ખોલો"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"કંઈપણ પસંદ કરેલું નથી"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ખાતરી કરો કે તમે આ ઍપનો વિશ્વાસ કરો છો&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google ઑટોમૅટિક રીતે ભરવાની સુવિધા&gt;%1$s&lt;/xliff:g&gt; તમારી સ્ક્રીન પર શું છે તેનો ઉપયોગ એ નક્કી કરવા કરે છે કે ઑટોમૅટિક રીતે શું દાખલ થશે."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; હવેથી નવા પાસવર્ડ, પાસકી તેમજ અન્ય માહિતી અહીં સાચવવામાં આવશે. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; દ્વારા ઑટોમૅટિક રીતે ભરવાની માહિતી નક્કી કરવા માટે તમારી સ્ક્રીન પરની માહિતીનો ઉપયોગ કરવામાં આવી શકે છે."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"પાસવર્ડ માટે પસંદગીની સેવા, પાસકી અને ઑટોમૅટિક રીતે ભરવાની સુવિધા"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;બધી સેવાઓ બંધ કરીએ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; જ્યારે તમે સાઇન ઇન કરશો ત્યારે પાસવર્ડ, પાસકી અને અન્ય સાચવેલી માહિતી ઑટોમૅટિક રીતે ભરવા માટે ઉપલબ્ધ રહેશે નહીં"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;તમારી પસંદગીની સેવાને આના વડે બદલો: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; હવેથી નવા પાસવર્ડ, પાસકી અને અન્ય માહિતી અહીં સાચવવામાં આવશે. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; દ્વારા ઑટોમૅટિક રીતે ભરવાની માહિતી નક્કી કરવા માટે તમારી સ્ક્રીન પરની માહિતીનો ઉપયોગ કરવામાં આવી શકે છે"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$sનો ઉપયોગ કરીએ?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"બંધ કરો"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"બદલો"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"તમે ફક્ત 5 સેવા ચાલુ રાખી શકો છો"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"અન્ય સેવા ઉમેરવા માટે ઓછામાં ઓછી 1 સેવા બંધ કરો"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"ઑટોમૅટિક રીતે શું ભરી શકાય તે નક્કી કરવા માટે %1$s તમારી સ્ક્રીન પર જે છે તેનો ઉપયોગ કરે છે."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"પ્લેયર છુપાવો"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"પ્લેયર બતાવો"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"મીડિયા"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"કૅમેરા સૉફ્ટવેર એક્સ્ટેન્શનની મંજૂરી આપો"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"આઇઝ-ફ્રી વીડિયોગ્રાફી જેવી કૅમેરાની વિગતવાર સુવિધાઓનું ડિફૉલ્ટ સૉફ્ટવેર અમલીકરણ ચાલુ કરે છે."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"બ્લૂટૂથ ચાલુ થશે"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"ઇન્ટરનેટ"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"સિમ"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 0d13faa..f48ac85 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -443,7 +443,7 @@
     <string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"सेटअप करना होगा"</string>
     <string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"चेहरे का मॉडल और फ़िंगरप्रिंट जोड़े गए"</string>
     <string name="security_settings_biometric_preference_summary_both_fp_single" msgid="684409535278676426">"चेहरे का मॉडल और फ़िंगरप्रिंट जोड़ा गया"</string>
-    <string name="biometric_settings_intro" msgid="4263069383955676756">"अगर आपके फ़ोन में \'फ़िंगरप्रिंट अनलॉक\' और \'फ़ेस अनलॉक\' की सुविधा सेट है, तो चेहरे पर मास्क लगा होने या आस-पास रोशनी न होने पर, फ़ोन आपका फ़िंगरप्रिंट मांगेगा"</string>
+    <string name="biometric_settings_intro" msgid="4263069383955676756">"अगर आपके फ़ोन में फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप है, तो चेहरे पर मास्क लगा होने पर या आस-पास रोशनी न होने पर, फ़ोन आपका फ़िंगरप्रिंट मांगेगा"</string>
     <string name="biometric_settings_category_ways_to_unlock" msgid="3384767901580915266">"फ़ोन को अनलॉक करने के तरीके"</string>
     <string name="biometric_settings_category_use_face_fingerprint" msgid="4377659744376863913">"चेहरे या फ़िंगरप्रिंट का इस्तेमाल करके:"</string>
     <string name="biometric_settings_use_biometric_unlock_phone" msgid="8180914579885804358">"अपना फ़ोन अनलॉक करें"</string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"फ़ोन को अनलॉक करने के तरीके"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"डिवाइस के स्क्रीन लॉक की तरह"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"प्राइवेट स्पेस के लिए नया लॉक चुनना है?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"अपने-आप लॉक होने की सुविधा पाएं"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"प्राइवेट स्पेस अपने-आप लॉक होने की सुविधा पाएं"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"प्राइवेट स्पेस अपने-आप लॉक होने की सुविधा पाएं"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"आपके पास यह विकल्प है कि डिवाइस का इस्तेमाल कुछ समय तक न होने पर, प्राइवेट स्पेस अपने-आप लॉक हो जाए"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"हर बार डिवाइस लॉक होने पर"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"पांच मिनट तक कोई गतिविधि न होने पर"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"पैटर्न"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"पिन"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"पासवर्ड"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"क्या डिवाइस अनलॉक करने की सभी सुविधाएं हटानी हैं?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"प्रोफ़ाइल सुरक्षा निकालें?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"अगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पैटर्न आपके फ़ोन की सुरक्षा करता है"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"अगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पैटर्न आपके फ़ोन की सुरक्षा करता है.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>फ़ोन को पैटर्न का इस्तेमाल करके सुरक्षित करने पर, डिवाइस पर सेव किया गया फ़िंगरप्रिंट का मॉडल मिट जाता है. इसके अलावा, आपके चेहरे का मॉडल भी सुरक्षित तरीके से हमेशा के लिए मिटा दिया जाएगा. ऐप्लिकेशन में अपनी पहचान की पुष्टि करने के लिए, आप अपने चेहरे के माॅडल या फ़िंगरप्रिंट का इस्तेमाल नहीं कर पाएंगे."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"अगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पिन आपके फ़ोन की सुरक्षा करता है"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"आपके पास सेव किया डेटा नहीं रहेगा. जैसे, पिन.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>टैप करके पेमेंट करने की सुविधा के लिए सेट किए गए कार्ड हटा दिए जाएंगे.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>वॉलेट और अन्य ऐप्लिकेशन, जिन्हें अनलॉक करने की ज़रूरत होती है वे ठीक से काम नहीं करेंगे."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"अगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पिन आपके फ़ोन की सुरक्षा करता है.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>इससे, डिवाइस पर सेव किया गया फ़िंगरप्रिंट का मॉडल भी मिट जाता है. ऐप्लिकेशन में अपनी पहचान की पुष्टि करने के लिए, अपने फ़िंगरप्रिंट का इस्तेमाल नहीं किया जा सकेगा."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"आपके पास सेव किया डेटा नहीं रहेगा. जैसे, पिन और फ़िंगरप्रिंट का मॉडल.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>टैप करके पेमेंट करने की सुविधा के लिए सेट किए गए कार्ड हटा दिए जाएंगे.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>वॉलेट और अन्य ऐप्लिकेशन, जिन्हें अनलॉक करने की ज़रूरत होती है वे ठीक से काम नहीं करेंगे."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"अगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पिन आपके फ़ोन की सुरक्षा करता है.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>इसके अलावा, आपके चेहरे का मॉडल भी सुरक्षित तरीके से हमेशा के लिए मिटा दिया जाएगा. ऐप्लिकेशन में अपनी पहचान की पुष्टि करने के लिए, आप अपने चेहरे के मॉडल का इस्तेमाल नहीं कर पाएंगे."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"आपके पास सेव किया डेटा नहीं रहेगा. जैसे, पिन और चेहरे का मॉडल.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>टैप करके पेमेंट करने की सुविधा के लिए सेट किए गए कार्ड हटा दिए जाएंगे.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>वॉलेट और अन्य ऐप्लिकेशन, जिन्हें अनलॉक करने की ज़रूरत होती है वे ठीक से काम नहीं करेंगे."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"अगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पिन आपके फ़ोन की सुरक्षा करता है.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>फ़ोन को पिन का इस्तेमाल करके सुरक्षित करने पर, डिवाइस पर सेव किया गया फ़िंगरप्रिंट का मॉडल मिट जाता है. इसके अलावा, आपके चेहरे का मॉडल भी सुरक्षित तरीके से हमेशा के लिए मिटा दिया जाएगा. ऐप्लिकेशन में अपनी पहचान की पुष्टि करने के लिए, आप अपने चेहरे के माॅडल या फ़िंगरप्रिंट का इस्तेमाल नहीं कर पाएंगे."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"आपके पास सेव किया डेटा नहीं रहेगा. जैसे, पिन, चेहरे और फ़िंगरप्रिंट का मॉडल.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>टैप करके पेमेंट करने की सुविधा के लिए सेट किए गए कार्ड हटा दिए जाएंगे.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>वॉलेट और अन्य ऐप्लिकेशन, जिन्हें अनलॉक करने की ज़रूरत होती है वे ठीक से काम नहीं करेंगे."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"अगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके फ़ोन की सुरक्षा करता है"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"अगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके फ़ोन की सुरक्षा करता है.<xliff:g id="EMPTY_LINE">
 
@@ -1757,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"संग्रहित नहीं किया जा सका"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> को संग्रहित किया गया"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"वापस नहीं लाया जा सका"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> को वापस लाया जा रहा है"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> को पहले जैसा किया जा रहा है"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"कोई और डेटा दूसरी जगह भेजा जा रहा है."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"मेमोरी में ज़रुरत के मोताबिक जगह नहीं बची है"</string>
     <string name="does_not_exist" msgid="6499163879348776120">"ऐप्लिकेशन मौजूद नहीं है."</string>
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"ज़्यादा विकल्पों के लिए टचपैड के सबसे नीचे दाएं कोने पर टैप करें"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"पॉइंटर की स्पीड"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"टचपैड पर हाथ के जेस्चर जानें"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"होम स्क्रीन पर जाएं"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"टचपैड पर तीन उंगलियों से कहीं भी ऊपर की ओर स्वाइप करें"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"वापस जाएं"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"यह ऐप्लिकेशन, बैकग्राउंड में बैटरी का इस्तेमाल कर पाएगा. ऐसा हो सकता है कि आपके डिवाइस की बैटरी समय से पहले ही खत्म हो जाए."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"ऐप्लिकेशन से रोक हटाएं"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"अभी नहीं"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"पूरा चार्ज करें"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"चार्जिंग ऐक्सेसरी की जांच करें"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"डिवाइस के साथ काम न करने वाले चार्जिंग सेटअप के बारे में ज़्यादा जानें"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"बैटरी मैनेजर"</string>
@@ -3832,7 +3847,7 @@
     <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"सहायक ऐप्लिकेशन को स्क्रीन पर मौजूद इमेज को ऐक्सेस करने की अनुमति दें"</string>
     <string name="assist_flash_title" msgid="5449512572885550108">"स्क्रीन फ़्लैश करें"</string>
     <string name="assist_flash_summary" msgid="3032289860177784594">"जब सहायक ऐप्लिकेशन, स्क्रीन पर मौजूद टेक्स्ट या स्क्रीनशॉट को ऐक्सेस करे, तो स्क्रीन के किनारों पर रोशनी चमकाएं"</string>
-    <string name="assist_footer" msgid="8248015363806299068">"स्क्रीन पर दिख रही जानकारी के आधार पर, सहायक ऐप्लिकेशन आपकी मदद कर सकते हैं. आपकी पूरी मदद करने के लिए, कुछ ऐप्लिकेशन पर लॉन्चर और बोलकर फ़ोन को निर्देश देने वाली सेवाएं काम करती हैं."</string>
+    <string name="assist_footer" msgid="8248015363806299068">"स्क्रीन पर दिख रही जानकारी के आधार पर, सहायक ऐप्लिकेशन आपकी मदद कर सकते हैं. आपकी पूरी मदद करने के लिए, कुछ ऐप्लिकेशन पर लॉन्चर और बोलकर फ़ोन को निर्देश देने वाली सेवाएँ काम करती हैं."</string>
     <string name="average_memory_use" msgid="717313706368825388">"औसत मेमोरी उपयोग"</string>
     <string name="maximum_memory_use" msgid="2171779724001152933">"अधिकतम मेमोरी उपयोग"</string>
     <string name="memory_usage" msgid="5594133403819880617">"मेमोरी का उपयोग"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"अपने-आप, भरना, अपने-आप भरना, डेटा, पासकी, और पासवर्ड"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"बदलें"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"खोलें"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"कोई आइटम नहीं चुना गया"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;पक्का करें कि आपको इस ऐप्लिकेशन पर भरोसा है&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google की मदद से, जानकारी अपने-आप भरने की सुविधा,&gt;%1$s&lt;/xliff:g&gt; ऑटोमैटिक भरी जा सकने वाली चीज़ें तय करने के लिए आपकी स्क्रीन पर मौजूद चीज़ों का इस्तेमाल करती है."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; नए पासवर्ड, पासकी, और अन्य जानकारी अब से यहां सेव की जाएगी. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; आपके डिवाइस की स्क्रीन पर दिख रहे कॉन्टेंट का इस्तेमाल करके, यह तय कर सकता है कि कौनसी जानकारी अपने-आप भरी जा सकती है."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"पासवर्ड, पासकी, और ऑटोमैटिक जानकारी भरने की सुविधा के लिए सेवा देने वाली पसंदीदा कंपनी"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;क्या आपको सभी सुविधाएं बंद करनी हैं?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; साइन इन करने के बाद पासवर्ड, पासकी, और सेव की गई अन्य जानकारी अपने-आप नहीं भरी जा सकेगी"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;अपनी पसंदीदा सेवा के तौर पर &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; को चुनें. नए पासवर्ड, पासकी, और अन्य जानकारी अब से यहां सेव होगी. ऐसा हो सकता है कि &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; आपके डिवाइस की स्क्रीन पर मौजूद कॉन्टेंट का इस्तेमाल करे. इससे यह पता लगाया जा सकेगा कि कौनसी जानकारी अपने-आप भरी जा सकती है"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s का इस्तेमाल करना है?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"बंद करें"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"बदलें"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"सिर्फ़ पांच सेवाएं जोड़ी जा सकती हैं"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"दूसरी सेवा जोड़ने के लिए, कम से कम एक सेवा बंद करें"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s आपकी स्क्रीन पर मौजूद जानकारी का इस्तेमाल करता है, ताकि अपने-आप भरने वाली जानकारी तय की जा सके."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"मीडिया प्लेयर को छिपाएं"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"मीडिया प्लेयर दिखाएं"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"मीडिया"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"कैमरा सॉफ़्टवेयर एक्सटेंशन को अनुमति दें"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"इससे ऐडवांस कैमरे की सुविधाओं के लिए डिफ़ॉल्ट सॉफ़्टवेयर को लागू करने की प्रोसेस चालू होती है. जैसे, आई फ़्री वीडियोग्राफ़ी."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ब्लूटूथ चालू हो जाएगा"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"इंटरनेट"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"सिम"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 9b3df61..70ade4b 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Načini otključavanja"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Isto kao i zaključavanje zaslona na uređaju"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Odabrati novo zaključavanje za privatni prostor?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Automatsko zaključavanje"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Automatsko zaključavanje privatnog prostora"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Automatsko zaključavanje privatnog prostora"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Možete automatski zaključati svoj privatni prostor ako niste koristili uređaj neko vrijeme"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Svaki put kad se uređaj zaključa"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Nakon pet minuta neaktivnosti"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Za više opcija dodirnite desni donji kut dodirne podloge"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Brzina pokazivača"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Učenje pokreta za dodirnu podlogu"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Na početni zaslon"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Prijeđite trima prstima nagore bilo gdje na dodirnoj podlozi"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Natrag"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ta će aplikacija moći upotrebljavati bateriju u pozadini. Baterija bi se mogla isprazniti brže nego što očekujete."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Ukloni"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Odustani"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Napuni do kraja"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Provjerite dodatak za punjenje"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Saznajte više o punjenju pomoću nekompatibilnog adaptera"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatsko, popunjavanje, automatsko popunjavanje, podaci, pristupni ključ, zaporka"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Promijeni"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Otvori"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ništa nije odabrano"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Provjerite je li ova aplikacija pouzdana&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google automatsko popunjavanje&gt;%1$s&lt;/xliff:g&gt; upotrebljava sadržaj na zaslonu za procjenu onoga što se može automatski popuniti."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nove zaporke, pristupni ključevi i drugi podaci odsad će se spremati ovdje. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; može koristiti sadržaj vašeg zaslona kako bi utvrdio što se može automatski popuniti."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Preferirani davatelj usluga za zaporke, pristupne ključeve i automatsko popunjavanje"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Želite li isključiti sve usluge?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Zaporke, pristupni ključevi i drugi spremljeni podaci neće biti dostupni za automatsko popunjavanje kad se prijavite"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Promijenite preferiranu uslugu u &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nove zaporke, pristupni ključevi i drugi podaci odsad će se spremati ovdje. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; može koristiti sadržaj vašeg zaslona kako bi se utvrdilo što se može automatski popuniti"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Upotrijebiti davatelja vjerodajnica %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Isključi"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Promijeni"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Može biti uključeno samo pet usluga"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Isključite barem jednu uslugu da biste dodali drugu"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s utvrđuje što se može automatski popuniti na temelju sadržaja zaslona."</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 4823a6f..287001e 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Feloldási módszerek"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Ugyanaz, mint az eszköz képernyőzára"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Új zárolást választ a magánterülethez?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Automatikus zárolás"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Magánterület automatikus zárolása"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Magánterület automatikus zárolása"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Automatikusan zárolhatja a magánterületet, ha bizonyos ideje nem használta az eszközt."</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Minden alkalommal az eszköz zárolásakor"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 perces inaktivitás után"</string>
@@ -1768,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"Archiválás sikertelen"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> archiválva"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"A visszaállítás nem sikerült"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"A(z) <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> visszaállítása…"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> visszaállítása…"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"Már folyamatban van egy másik adatátvitel."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"Nincs elég tárhely."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"Az alkalmazás nem létezik."</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Több beállítás: koppintson az érintőpad jobb alsó sarkában"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Mutató sebessége"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Érintőpad-kézmozdulatok megismerése"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Ugrás a főoldalra"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Csúsztasson gyorsan felfelé 3 ujjával bárhol az érintőpadon"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Vissza"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ez az alkalmazás a háttérben is használhatja az akkumulátort. Emiatt az akkumulátor a vártnál gyorsabban lemerülhet."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Eltávolítás"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Mégse"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Teljes feltöltés"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Ellenőrizze a töltőtartozékot"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"További információ a nem kompatibilis töltésről"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Akkumulátorkezelő"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatikus, kitöltés, automatikus kitöltés, adatok, azonosítókulcs, jelszó"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Módosítás"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Megnyitás"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nincs kiválasztott elem"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Győződjön meg arról, hogy az alkalmazás megbízható.&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; A(z) &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; az Ön képernyőjén szereplő információk alapján határozza meg, hogy mit lehet automatikusan kitölteni."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Használja a(z) &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; alkalmazást?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Az új jelszavakat, az azonosítókulcsokat és az egyéb információkat mostantól ide menti a rendszer. A(z) &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; alkalmazás felhasználhatja az Ön képernyőjén megjelenő információkat az automatikusan kitölthető elemek meghatározásához."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"A jelszavaknál, az azonosítókulcsoknál és az automatikus kitöltésnél preferált szolgáltatás"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Minden szolgáltatást kikpcsol?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; A rendszer nem fogja automatikusan kitölteni a jelszavakat, azonosítókulcsokat és egyéb mentett adatokat, amikor Ön be van jelentkezve."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Módosítja a preferált szolgáltatást a következőre: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Az új jelszavak, azonosítókulcsok és egyéb adatok mostantól ide lesznek mentve. A(z) &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; alkalmazás felhasználhatja az Ön képernyőjén megjelenő információkat az automatikusan kitölthető elemek meghatározásához."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Használni szeretné a következőt: %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Kikapcsolás"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Módosítás"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Legfeljebb öt szolgáltatás lehet egyszerre bekapcsolva"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Újabb szolgáltatás hozzáadásához kapcsoljon ki legalább egyet a meglévők közül"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"A(z) %1$s felhasználja az Ön képernyőjén megjelenő információkat az automatikusan kitölthető elemek meghatározásához."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Lejátszó elrejtése"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Lejátszó megjelenítése"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"média"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Bővítmények engedélyezése a kamera szoftveréhez"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Engedélyezi a speciális kamerafunkciók (pl. hangvezérelt videózás) alapértelmezett szoftveres megvalósítását."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"A Bluetooth bekapcsol"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-kártyák"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 9f2aae5..74fc578 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Ապակողպման եղանակներ"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Նույնը, ինչ սարքի էկրանի կողպումը"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Ընտրե՞լ նոր կողպում մասնավոր տարածքի համար։"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Ավտոմատ կողպում"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Մասնավոր տարածքի ավտոմատ կողպում"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Մասնավոր տարածքի ավտոմատ կողպում"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Կարող եք այնպես անել, որ ձեր մասնավոր տարածքն ավտոմատ կողպվի, եթե որոշ ժամանակ չօգտագործեք ձեր սարքը"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Ամեն անգամ, երբ սարքը կողպվում է"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Անգործուն մնալուց 5 րոպե հետո"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Այլ տարբերակների համար հպեք հպահարթակի ներքևի աջ անկյունին"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Նշորդի արագությունը"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Սովորել հպահարթակի ժեստերը"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Վերադարձ հիմնական էկրան"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Հպահարթակի վրա երեք մատը սահեցրեք վերև"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Հետ"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Այս հավելվածը կկարողանա օգտագործել մարտկոցը ֆոնային ռեժիմում, ինչի պատճառով դրա լիցքը կարող է ավելի շուտ սպառվել:"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Ջնջել"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Չեղարկել"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Լիցքավորել ամբողջությամբ"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Ստուգեք լիցքավորիչը"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Իմանալ ավելին անհամատեղելի ադապտերով լիցքավորման մասին"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Մարտկոցի կառավարիչ"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ավտոմատ, լրացնել, ինքնալրացում, տվյալներ, անցաբառ, գաղտնաբառ"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Փոփոխել"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Բացել"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ոչինչ ընտրված չէ"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Համոզվեք, որ վստահում եք այս հավելվածին&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt;-ն օգտագործում է էկրանի բովանդակությունը՝ որոշելու, թե ինչը կարող է ինքնալրացվել:"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Օգտագործեք &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; հավելվածը &lt;br/&gt; &lt;br/&gt; Նոր գաղտնաբառերը, անցաբառերը և այլ տեղեկություններ այսուհետ կպահվեն այստեղ։ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; հավելվածը կարող է օգտագործել ձեր էկրանի բովանդակությունը՝ որոշելու, թե ինչ կարելի է ինքնալրացնել։"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Նախընտրելի ծառայությունը գաղտնաբառերի, անցաբառերի և ինքնալրացման համար"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Անջատե՞լ բոլոր ծառայությունները&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Գաղտնաբառերը, անցաբառերը և այլ տեղեկություններ հասանելի չեն լինի ինքնալրացման համար, երբ հաշիվ մտնեք"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Փոխարինե՞լ նախընտրած ծառայությունը նորով՝ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Նոր գաղտնաբառերը, անցաբառերը և այլ տեղեկություններ այսուհետ կպահվեն այստեղ։ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; հավելվածը կարող է օգտագործել ձեր էկրանի բովանդակությունը՝ որոշելու, թե ինչ կարելի է ինքնալրացնել"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Օգտագործե՞լ %1$s"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Անջատել"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Փոխել"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Դուք կարող եք միայն 5 միացված ծառայություն ունենալ"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Անջատեք առնվազն մեկ ծառայություն՝ նորն ավելացնելու համար"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s-ն օգտագործում է ձեր էկրանի բովանդակությունը՝ որոշելու, թե ինչ կարելի է ինքնալրացնել։"</string>
@@ -4365,15 +4370,15 @@
     <string name="angle_enabled_app" msgid="6044941043384239076">"Ընտրեք ANGLE-ի աջակցմամբ հավելված"</string>
     <string name="angle_enabled_app_not_set" msgid="4472572224881726067">"ANGLE-ի աջակցմամբ հավելված նշված չէ"</string>
     <string name="angle_enabled_app_set" msgid="7811829383833353021">"ANGLE-ի աջակցմամբ հավելված՝ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="graphics_driver_dashboard_title" msgid="5661084817492587796">"Գրաֆիկական սարքավարի կարգավորումներ"</string>
-    <string name="graphics_driver_dashboard_summary" msgid="6348759885315793654">"Փոփոխել գրաֆիկական սարքավարի կարգավորումները"</string>
-    <string name="graphics_driver_footer_text" msgid="5123754522284046790">"Մի քանի գրաֆիկական սարքավարի առկայության դեպքում սարքում տեղադրված հավելվածների համար դուք կարող եք օգտագործել թարմացված գրաֆիկական սարքավարը:"</string>
+    <string name="graphics_driver_dashboard_title" msgid="5661084817492587796">"Գրաֆիկական դրայվերի կարգավորումներ"</string>
+    <string name="graphics_driver_dashboard_summary" msgid="6348759885315793654">"Փոփոխել գրաֆիկական դրայվերի կարգավորումները"</string>
+    <string name="graphics_driver_footer_text" msgid="5123754522284046790">"Մի քանի գրաֆիկական դրայվերի առկայության դեպքում սարքում տեղադրված հավելվածների համար դուք կարող եք օգտագործել թարմացված գրաֆիկական սարքավարը:"</string>
     <string name="graphics_driver_all_apps_preference_title" msgid="1343065382898127360">"Միացնել բոլոր հավելվածների համար"</string>
     <string name="graphics_driver_app_preference_title" msgid="3133255818657706857">"Ընտրեք գրաֆիկական սարքավարը"</string>
     <string name="graphics_driver_app_preference_default" msgid="764432460281859855">"Կանխադրված"</string>
-    <string name="graphics_driver_app_preference_production_driver" msgid="1515874802568434915">"Խաղային սարքավար"</string>
-    <string name="graphics_driver_app_preference_prerelease_driver" msgid="7355929161805829480">"Մշակողների համար նախատեսված սարքավար"</string>
-    <string name="graphics_driver_app_preference_system" msgid="3754748149113184126">"Համակարգի գրաֆիկական սարքավար"</string>
+    <string name="graphics_driver_app_preference_production_driver" msgid="1515874802568434915">"Խաղային դրայվեր"</string>
+    <string name="graphics_driver_app_preference_prerelease_driver" msgid="7355929161805829480">"Մշակողների համար նախատեսված դրայվեր"</string>
+    <string name="graphics_driver_app_preference_system" msgid="3754748149113184126">"Համակարգի գրաֆիկական դրայվեր"</string>
     <!-- no translation found for graphics_driver_all_apps_preference_values:0 (8039644515855740879) -->
     <!-- no translation found for graphics_driver_all_apps_preference_values:1 (157748136905839375) -->
     <!-- no translation found for graphics_driver_all_apps_preference_values:2 (8104576549429294026) -->
@@ -4382,7 +4387,7 @@
     <!-- no translation found for graphics_driver_app_preference_values:2 (5391218026495225599) -->
     <!-- no translation found for graphics_driver_app_preference_values:3 (2586045835780389650) -->
     <string name="enable_angle_as_system_driver" msgid="4648827560023949786">"Փորձնական գործառույթ․ միացնել ANGLE-ը"</string>
-    <string name="enable_angle_as_system_driver_summary" msgid="2170215556348477481">"Նախազգուշացում․ միացրեք ANGLE-ը որպես կանխադրված OpenGL ES սարքավար։ Այս գործառույթը փորձարկման փուլում է և կարող է համատեղելի չլինել տեսանյութերի ստեղծման և տեսախցիկի որոշ հավելվածների հետ։"</string>
+    <string name="enable_angle_as_system_driver_summary" msgid="2170215556348477481">"Նախազգուշացում․ միացրեք ANGLE-ը որպես կանխադրված OpenGL ES դրայվեր։ Այս գործառույթը փորձարկման փուլում է և կարող է համատեղելի չլինել տեսանյութերի ստեղծման և տեսախցիկի որոշ հավելվածների հետ։"</string>
     <string name="reboot_dialog_enable_angle_as_system_driver" msgid="2619263039763150810">"Համակարգի OpenGL ES սարքավարը փոխելու համար պահանջվում է վերաբեռնում"</string>
     <string name="platform_compat_dashboard_title" msgid="1323980546791790236">"Հավելվածների համատեղելիության փոփոխություններ"</string>
     <string name="platform_compat_dashboard_summary" msgid="4036546607938791337">"Թաքցնել/ցուցադրել հավելվածների համատեղելիության փոփոխությունները"</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Թաքցնել նվագարկիչը"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Ցուցադրել նվագարկիչը"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"մեդիա"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Թույլատրել տեսախցիկի ծրագրակազմի ընդլայնումների օգտագործումը"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Միացնում է տեսախցիկի ընդլայնված գործառույթների (օր.՝ առանց էկրանին նայելու տեսագրման) կանխադրված ծրագրային ապահովումը։"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Կմիանա Bluetooth-ը"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Ինտերնետ"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM քարտեր"</string>
@@ -4836,7 +4839,7 @@
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Թույլատրել մեկից ավելի օգտատերեր"</string>
     <string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"թույլ տալ, մի քանի, օգտատեր, թույլատրել, շատ"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Օգտագործել անլար վրիպազերծումը"</string>
-    <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Օգտագործել գրաֆիկական սարքավարի կարգավորումները"</string>
+    <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Օգտագործել գրաֆիկական դրայվերի կարգավորումները"</string>
     <string name="night_light_main_switch_title" msgid="3428298022467805219">"Օգտագործել «Գիշերային լույս» գործառույթը"</string>
     <string name="nfc_main_switch_title" msgid="6295839988954817432">"Օգտագործել NFC-ն"</string>
     <string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"Օգտագործել հարմարվող պայծառությունը"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index a55e83f..ed66437 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Cara membuka kunci"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Sama dengan kunci layar perangkat"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Pilih kunci baru untuk ruang privasi?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Mengunci secara otomatis"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Mengunci ruang privasi secara otomatis"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Mengunci ruang privasi secara otomatis"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Anda dapat mengunci ruang privasi secara otomatis jika Anda tidak menggunakan perangkat selama jangka waktu tertentu"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Setiap kali perangkat terkunci"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Setelah 5 menit tidak aktif"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Pola"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Sandi"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Hapus semua jenis buka kunci perangkat?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Hapus perlindungan profil?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Pola melindungi ponsel Anda jika hilang atau dicuri"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Pola melindungi ponsel Anda jika hilang atau dicuri.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Pola ini menghapus model sidik jari yang disimpan di perangkat. Model wajah Anda juga akan dihapus secara permanen dan aman. Anda tidak akan dapat menggunakan wajah atau sidik jari Anda untuk autentikasi dalam aplikasi."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN melindungi ponsel Anda jika hilang atau dicuri"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Anda akan kehilangan data tersimpan seperti PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kartu yang disiapkan untuk pembayaran nirsentuh akan dihapus.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallet dan aplikasi lainnya yang memerlukan buka kunci perangkat mungkin tidak berfungsi dengan baik."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN melindungi ponsel Anda jika hilang atau dicuri.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Tindakan ini juga menghapus model sidik jari yang disimpan di perangkat. Anda tidak akan dapat menggunakan sidik jari Anda untuk autentikasi dalam aplikasi."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Anda akan kehilangan data tersimpan seperti PIN dan model sidik jari.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kartu yang disiapkan untuk pembayaran nirsentuh akan dihapus.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallet dan aplikasi lainnya yang memerlukan buka kunci perangkat mungkin tidak berfungsi dengan baik."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN melindungi ponsel Anda jika hilang atau dicuri.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Model wajah Anda juga akan dihapus secara permanen dan aman. Anda tidak akan dapat menggunakan wajah Anda untuk autentikasi dalam aplikasi."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Anda akan kehilangan data tersimpan seperti PIN dan model wajah.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kartu yang disiapkan untuk pembayaran nirsentuh akan dihapus.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallet dan aplikasi lainnya yang memerlukan buka kunci perangkat mungkin tidak berfungsi dengan baik."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN melindungi ponsel Anda jika hilang atau dicuri.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>PIN ini menghapus model sidik jari yang disimpan di perangkat. Model wajah Anda juga akan dihapus secara permanen dan aman. Anda tidak akan dapat menggunakan wajah atau sidik jari Anda untuk autentikasi dalam aplikasi."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Anda akan kehilangan data tersimpan seperti PIN, model wajah, dan model sidik jari.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kartu yang disiapkan untuk pembayaran nirsentuh akan dihapus.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallet dan aplikasi lainnya yang memerlukan buka kunci perangkat mungkin tidak berfungsi dengan baik."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Sandi melindungi ponsel Anda jika hilang atau dicuri"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Sandi melindungi ponsel Anda jika hilang atau dicuri.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Ketuk pojok kanan bawah touchpad untuk melihat opsi lainnya"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Kecepatan kursor"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Pelajari gestur touchpad"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Membuka layar utama"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Geser ke atas dengan tiga jari di touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Kembali"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Aplikasi ini dapat menggunakan baterai di latar belakang. Baterai mungkin lebih cepat habis dari biasanya."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Hapus"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Batal"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Isi daya sampai penuh"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Periksa aksesori pengisi daya"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Pelajari lebih lanjut mengisi daya dengan pengisi daya yang tidak kompatibel"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Pengelola Baterai"</string>
@@ -3832,7 +3847,7 @@
     <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Izinkan aplikasi bantuan mengakses gambar layar"</string>
     <string name="assist_flash_title" msgid="5449512572885550108">"Kedipkan layar"</string>
     <string name="assist_flash_summary" msgid="3032289860177784594">"Kedipkan tepi layar saat aplikasi bantuan mengakses teks dari layar atau screenshot"</string>
-    <string name="assist_footer" msgid="8248015363806299068">"Aplikasi bantuan dapat membantu Anda berdasarkan informasi dari layar yang sedang Anda lihat. Beberapa aplikasi mendukung peluncur dan layanan masukan suara untuk memberikan bantuan terintegrasi."</string>
+    <string name="assist_footer" msgid="8248015363806299068">"Aplikasi bantuan dapat membantu Anda berdasarkan informasi dari layar yang sedang Anda lihat. Beberapa aplikasi mendukung peluncur dan layanan input suara untuk memberikan bantuan terintegrasi."</string>
     <string name="average_memory_use" msgid="717313706368825388">"Rata-rata penggunaan memori"</string>
     <string name="maximum_memory_use" msgid="2171779724001152933">"Penggunaan memori maksimum"</string>
     <string name="memory_usage" msgid="5594133403819880617">"Penggunaan memori"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"otomatis, isi, isi otomatis, data, kunci sandi, sandi"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Ubah"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Buka"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Tidak ada yang dipilih"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Pastikan Anda memercayai aplikasi ini&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Isi Otomatis Google&gt;%1$s&lt;/xliff:g&gt; menggunakan item yang ada di layar untuk menentukan item apa saja yang dapat diisi otomatis."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Gunakan &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Sandi, kunci sandi, dan info baru lainnya akan disimpan di sini mulai sekarang. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; dapat menggunakan konten di layar untuk menentukan item yang dapat diisi otomatis."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Layanan pilihan untuk sandi, kunci sandi &amp; isi otomatis"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Nonaktifkan semua layanan?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Sandi, kunci sandi, dan info tersimpan lainnya tidak akan tersedia untuk pengisian otomatis saat Anda login"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Ubah layanan pilihan Anda ke &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Sandi, kunci sandi, dan info baru lainnya akan disimpan di sini mulai sekarang. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; menggunakan konten di layar untuk menentukan item yang dapat diisi otomatis"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Gunakan %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Nonaktifkan"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Ubah"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Anda hanya dapat memiliki 5 layanan aktif"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Nonaktifkan minimal 1 layanan untuk menambahkan layanan lain"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s menggunakan item yang ada di layar untuk menentukan item apa yang dapat diisi otomatis."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Sembunyikan pemutar"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Tampilkan pemutar"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Izinkan ekstensi software kamera"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Memungkinkan penerapan software default fitur kamera lanjutan, seperti videografi Eyes Free."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth akan diaktifkan"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 833b942..d4fae2b 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Leiðir til að taka úr lás"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Sami skjálás og í tæki"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Velja nýjan lás fyrir leynirými?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Læsa sjálfkrafa"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Læsa leynirými sjálfkrafa"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Læsa leynirými sjálfkrafa"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Þú getur valið að læsa leynirýminu þínu sjálfkrafa ef þú hefur ekki notað tækið í tiltekinn tíma"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Í hvert skipti sem tækið læsist"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Eftir 5 mínútur af aðgerðaleysi"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Mynstur"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN-númer"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Aðgangsorð"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Fjarlægja allar aðferðir til að taka tækið úr lás?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Fjarlægja vernd fyrir sniðið?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Mynstur verndar símann ef hann týnist eða ef honum er stolið"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Mynstur verndar símann ef hann týnist eða ef honum er stolið.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Þetta eyðir fingrafaralíkaninu sem er vistað í tækinu þínu. Andlitslíkaninu þínu verður einnig eytt endanlega á öruggan hátt. Þú munt ekki geta notað andlitið eða fingrafarið til auðkenningar í forritum."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN-númer verndar símann ef hann týnist eða ef honum er stolið"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Þú munt glata vistuðum gögnum, s.s. PIN-númerinu þínu.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort sem voru sett upp fyrir snertilausar greiðslur verða fjarlægð.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Veski og önnur forrit sem krefjast þess að tækið sé tekið úr lás munu hugsanlega ekki virka sem skyldi."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN-númer verndar símann ef hann týnist eða ef honum er stolið.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Þetta eyðir einnig fingrafaralíkaninu sem er vistað í tækinu þínu. Þú munt ekki geta notað fingrafarið til auðkenningar í forritum."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Þú munt glata vistuðum gögnum, s.s. PIN-númerinu þínu og fingrafarslíkani.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort sem voru sett upp fyrir snertilausar greiðslur verða fjarlægð.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Veski og önnur forrit sem krefjast þess að tækið sé tekið úr lás munu hugsanlega ekki virka sem skyldi."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN-númer verndar símann ef hann týnist eða ef honum er stolið.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Andlitslíkaninu þínu verður einnig eytt endanlega á öruggan hátt. Þú munt ekki geta notað andlitið til auðkenningar í forritum."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Þú munt glata vistuðum gögnum, s.s. PIN-númerinu þínu og andlitslíkani.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort sem voru sett upp fyrir snertilausar greiðslur verða fjarlægð.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Veski og önnur forrit sem krefjast þess að tækið sé tekið úr lás munu hugsanlega ekki virka sem skyldi."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN-númer verndar símann ef hann týnist eða ef honum er stolið.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Þetta eyðir fingrafaralíkaninu sem er vistað í tækinu þínu. Andlitslíkaninu þínu verður einnig eytt endanlega á öruggan hátt. Þú munt ekki geta notað andlitið eða fingrafarið til auðkenningar í forritum."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Þú munt glata vistuðum gögnum, s.s. PIN-númerinu þínu, andlits- og fingrafarslíkani.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort sem voru sett upp fyrir snertilausar greiðslur verða fjarlægð.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Veski og önnur forrit sem krefjast þess að tækið sé tekið úr lás munu hugsanlega ekki virka sem skyldi."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Aðgangsorð verndar símann ef hann týnist eða ef honum er stolið"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Aðgangsorð verndar símann ef hann týnist eða ef honum er stolið.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Ýttu á hægra hornið neðst á snertifletinum til að sjá fleiri valkosti"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Hraði bendils"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Nánar um bendingar á snertifleti"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Fara á upphafssíðu"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Strjúktu upp með þremur fingrum hvar sem er á snertifletinum"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Til baka"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Þetta forrit getur notað rafhlöðuna í bakgrunni. Rafhlaðan gæti tæmst hraðar en venjulega."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Fjarlægja"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Hætta við"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Fullhlaða"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Athugaðu hleðslubúnaðinn"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Nánar um ósamhæfa hleðslu"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Rafhlöðustjórnun"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"sjálfvirkt, útfylling, sjálfvirk útfylling, gögn, aðgangslykill, aðgangsorð"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Breyta"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Opna"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ekkert valið"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Gakktu úr skugga um að þú treystir þessu forriti&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Sjálfvirk útfylling Google&gt;%1$s&lt;/xliff:g&gt; notar það sem er á skjánum til að ákvarða hvað er hægt að fylla sjálfkrafa út."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Nota &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Ný aðgangsorð, aðgangslyklar og aðrar upplýsingar verða vistaðar hér framvegis. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kann að nota það sem er á skjánum hjá þér til að greina hvað er hægt að fylla sjálfkrafa út."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Valin þjónusta fyrir aðgangsorð, aðgangslykla og sjálfvirka útfyllingu"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Slökkva á öllum þjónustum?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Aðgangsorð, aðgangslyklar og aðrar vistaðar upplýsingar verða ekki tiltækar fyrir sjálfvirka útfyllingu þegar þú skráir þig inn"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Breyta valinni þjónustu í &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Ný aðgangsorð, aðgangslyklar og aðrar upplýsingar verða vistaðar héðan í frá. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kann að nota það sem er á skjánum hjá þér til að greina hvað er hægt að fylla sjálfkrafa út"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Nota %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Slökkva"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Breyta"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Þú getur aðeins verið með kveikt á 5 þjónustum í einu"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Slökktu á a.m.k. 1 þjónustu til að bæta nýrri við"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s notar efni á skjánum hjá þér til að ákvarða hvað er hægt að fylla út sjálfkrafa."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Fela spilara"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Sýna spilara"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"margmiðlunarefni"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Leyfa viðbætur við hugbúnað myndavélar"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Kveikir á sjálfgefinni hugbúnaðarinnleiðingu á ítareiginleikum myndavélar, t.d. Eyes Free-vídeóupptöku."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Kveikt verður á Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 2ff571d..dd4046a 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Modi per sbloccare"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Uguale al blocco schermo del dispositivo"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Scegliere un nuovo blocco per lo spazio privato?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Blocca automaticamente"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Bloccare automaticamente lo spazio privato"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Blocca automaticamente lo spazio privato"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Puoi bloccare automaticamente il tuo spazio privato se non hai utilizzato il dispositivo per un certo periodo di tempo"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Ogni volta che il dispositivo si blocca"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Dopo 5 minuti di inattività"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Per più opzioni tocca l\'angolo destro in basso del touchpad"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocità del puntatore"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Impara i gesti con il touchpad"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Vai alla schermata Home"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Scorri in alto con 3 dita su un punto qualsiasi del touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Vai indietro"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Questa app potrà usare la batteria in background. La batteria potrebbe esaurirsi prima del previsto."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Rimuovi"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Annulla"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Carica completamente"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Controlla l\'accessorio di ricarica"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Scopri di più sulla ricarica con un alimentatore non compatibile"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Gestione batteria"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatica, compilazione, compilazione automatica, dati, passkey, password"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Cambia"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Apri"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nessun elemento selezionato"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Verifica che questa app sia attendibile&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=La Compilazione automatica di Google&gt;%1$s&lt;/xliff:g&gt; usa ciò che appare sullo schermo per stabilire quali contenuti possono essere compilati automaticamente."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Usa &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; D\'ora in poi, nuove password, passkey e altre informazioni verranno salvate qui. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; potrebbe usare i contenuti sullo schermo per stabilire quali informazioni possono essere compilate automaticamente."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Servizio preferito per password, passkey e compilazione automatica"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Disattiva tutti i servizi?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Password, passkey e altre informazioni salvate potrebbero non essere disponibili quando esegui l\'accesso"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Modifica il tuo servizio preferito in &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; D\'ora in poi, nuove password, passkey e altre informazioni verranno salvate qui. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; potrebbe usare i contenuti sullo schermo per stabilire quali informazioni possono essere compilate automaticamente"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Vuoi usare %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Disattiva"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Cambia"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Puoi attivare solo 5 servizi"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Disattiva almeno 1 servizio per aggiungerne un altro"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s usa i contenuti sullo schermo per stabilire quali informazioni possono essere compilate automaticamente."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Nascondi player"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Mostra player"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"contenuti multimediali"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Consenti le estensioni software della fotocamera"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Abilita l\'implementazione software predefinita delle funzionalità avanzate della fotocamera, come l\'estensione Eyes Free per i video."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Verrà attivato il Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 671b996..ac3266c 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"דרכים לביטול הנעילה"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"זהה לנעילת המסך במכשיר"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"רוצה לבחור שיטת נעילה חדשה למרחב הפרטי?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"נעילה אוטומטית"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"נעילת המרחב הפרטי באופן אוטומטי"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"נעילת המרחב הפרטי באופן אוטומטי"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"אפשר לנעול את המרחב הפרטי באופן אוטומטי אם לא משתמשים במכשיר במשך פרק זמן מסוים"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"בכל פעם שהמכשיר ננעל"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"אחרי 5 דקות של חוסר פעילות"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"קו ביטול נעילה"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"קוד אימות"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"סיסמה"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"להסיר את כל הסוגים של ביטול נעילת המכשיר?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"להסיר את הגנת הפרופיל?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"קו ביטול הנעילה מגן על הטלפון במקרה של אובדן או גניבה"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"קו ביטול הנעילה מגן על הטלפון במקרה של אובדן או גניבה.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>הפעולה הזו מוחקת את תבנית טביעת האצבע ששמורה במכשיר. בנוסף, התבנית לזיהוי פנים תימחק באופן סופי ומאובטח. לא תהיה לך אפשרות לבצע אימות באמצעות הפנים או טביעת אצבע באפליקציות."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"קוד האימות מגן על הטלפון במקרה של אובדן או גניבה"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"נתונים ששמרת יאבדו, למשל, קוד האימות.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>כרטיסים שהוגדרו באמצעות התכונה \'מצמידים ומשלמים\' יוסרו.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>יכול להיות שארנקים ואפליקציות אחרות שנדרש בהן ביטול נעילה של המכשיר לא יפעלו כמו שצריך."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"קוד האימות מגן על הטלפון במקרה של אובדן או גניבה.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>הפעולה הזו גם מוחקת את תבנית טביעת האצבע ששמורה במכשיר. לא תהיה לך אפשרות לבצע אימות באמצעות טביעת אצבע באפליקציות."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"נתונים ששמרת יאבדו, למשל קוד האימות והתבנית לזיהוי טביעת האצבע.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>כרטיסים שהוגדרו באמצעות התכונה \'מצמידים ומשלמים\' יוסרו.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>יכול להיות שארנקים ואפליקציות אחרות שנדרש בהן ביטול נעילה של המכשיר לא יפעלו כמו שצריך."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"קוד האימות מגן על הטלפון במקרה של אובדן או גניבה.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>בנוסף, התבנית לזיהוי פנים תימחק באופן סופי ומאובטח. לא תהיה לך אפשרות לבצע אימות באמצעות הפנים באפליקציות."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"נתונים ששמרת יאבדו, למשל קוד האימות והתבנית לזיהוי הפנים.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>כרטיסים שהוגדרו באמצעות התכונה \'מצמידים ומשלמים\' יוסרו.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>יכול להיות שארנקים ואפליקציות אחרות שנדרש בהן ביטול נעילה של המכשיר לא יפעלו כמו שצריך."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"קוד האימות מגן על הטלפון במקרה של אובדן או גניבה.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>הפעולה הזו מוחקת את תבנית טביעת האצבע ששמורה במכשיר. בנוסף, התבנית לזיהוי פנים תימחק באופן סופי ומאובטח. לא תהיה לך אפשרות לבצע אימות באמצעות הפנים או טביעת אצבע באפליקציות."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"נתונים ששמרת יאבדו, למשל, קוד האימות, התבניות לזיהוי הפנים וטביעת האצבע.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>כרטיסים שהוגדרו באמצעות התכונה \'מצמידים ומשלמים\' יוסרו .<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>יכול להיות שארנקים ואפליקציות אחרות שנדרש בהן ביטול נעילה של המכשיר לא יפעלו כמו שצריך."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"הסיסמה מגינה על הטלפון במקרה של אובדן או גניבה"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"הסיסמה מגינה על הטלפון במקרה של אובדן או גניבה.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"מקישים על הפינה הימנית התחתונה של לוח המגע לאפשרויות נוספות"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"מהירות המצביע"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"מידע על התנועות בלוח המגע"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"מעבר לדף הבית"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"מחליקים כלפי מעלה עם שלוש אצבעות על לוח המגע"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"הקודם"</string>
@@ -2164,7 +2178,7 @@
     <string name="accessibility_ring_vibration_title" msgid="4689811297654320885">"רטט הצלצול"</string>
     <string name="accessibility_notification_vibration_title" msgid="6205679908785776478">"רטט של התראה"</string>
     <string name="accessibility_touch_vibration_title" msgid="533931451319110741">"משוב מגע"</string>
-    <string name="accessibility_service_primary_switch_title" msgid="437610853412159406">"שימוש באפליקציה \'<xliff:g id="ACCESSIBILITY_APP_NAME">%1$s</xliff:g>\'"</string>
+    <string name="accessibility_service_primary_switch_title" msgid="437610853412159406">"שימוש ב-<xliff:g id="ACCESSIBILITY_APP_NAME">%1$s</xliff:g>"</string>
     <string name="accessibility_service_primary_open_title" msgid="8655108684769091154">"פתיחה של \'<xliff:g id="ACCESSIBILITY_APP_NAME">%1$s</xliff:g>\'"</string>
     <string name="accessibility_service_auto_added_qs_tooltip_content" msgid="2941824314912928072">"התכונה <xliff:g id="ACCESSIBILITY_APP_NAME">%1$s</xliff:g> נוספה להגדרות המהירות. כדי להפעיל או להשבית אותה מתי שרוצים, מחליקים למטה."</string>
     <string name="accessibility_service_qs_tooltip_content" msgid="6002493441414967868">"אפשר להוסיף את <xliff:g id="ACCESSIBILITY_APP_NAME">%1$s</xliff:g> להגדרות המהירות גם מהחלק העליון של המסך"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"האפליקציה הזו תוכל להשתמש בסוללה ברקע. ייתכן שהסוללה תתרוקן מוקדם מהצפוי."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"הסרה"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"ביטול"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"טעינה מלאה"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"בדיקה של אביזר הטעינה"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"מידע נוסף על טעינה לא תואמת"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"מנהל הסוללה"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"מילוי, אוטומטי, מילוי אוטומטי, נתונים, מפתח גישה, סיסמה"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"שינוי"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"פתיחה"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"לא נבחר אף פריט"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"‏&lt;b&gt;חשוב לוודא שהאפליקציה הזו מהימנה&lt;/b&gt;‏ ‏&lt;br/&gt; &lt;br/&gt;‏ ‏&lt;xliff:g id=app_name example=Google Autofill&gt;‏%1$s‏&lt;/xliff:g&gt; משתמשת במידע שמופיע במסך כדי לזהות אילו שדות אפשר למלא באופן אוטומטי."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"‏&lt;b&gt;להשתמש באפליקציה &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; סיסמאות, מפתחות גישה ופרטים חדשים נוספים יישמרו כאן מעכשיו. האפליקציה &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; יכולה לבדוק את אילו מהפריטים במסך אפשר למלא באופן אוטומטי."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"השירות המועדף עבור סיסמאות, מפתחות גישה ומילוי אוטומטי"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"‏&lt;b&amp;gtלהשבית את כל השירותים?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; סיסמאות, מפתחות גישה ונתונים שמורים אחרים לא יהיו זמינים למילוי אוטומטי בכניסה לחשבון"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"‏&lt;b&gt;שינוי השירות המועדף עליך ל-&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; סיסמאות ומפתחות גישה חדשים ונתונים אחרים יישמרו כאן מעכשיו. האפליקציה &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; יכולה לבדוק את אילו מהפריטים במסך אפשר למלא באופן אוטומטי"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"‏להשתמש ב-%1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"השבתה"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"שינוי"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"אפשר להפעיל רק 5 שירותים בכל פעם"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"צריך להשבית לפחות שירות אחד כדי להוסיף עוד שירות"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"‏%1$s עושה שימוש במידע המוצג במסך כדי לקבוע אילו פרטים ניתן למלא באופן אוטומטי."</string>
@@ -4752,10 +4768,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"הסתרת הנגן"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"הצגת הנגן"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"מדיה"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"הפעלת תוספים לתוכנה של המצלמה"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"האפשרות הזו מפעילה את הטמעת התוכנה שמוגדרת כברירת מחדל וקשורה לתכונות המתקדמות של המצלמה, כמו צילום וידאו ללא שימוש בראייה."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"‏Bluetooth יופעל"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"אינטרנט"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"‏כרטיסי SIM"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 3bb2197..caa20e0 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -168,7 +168,7 @@
     <string name="skip_label" msgid="6380034601349015895">"スキップ"</string>
     <string name="next_label" msgid="1248293387735652187">"次へ"</string>
     <string name="language_picker_title" msgid="4271307478263345133">"言語"</string>
-    <string name="language_picker_category_title" msgid="1792199453060454565">"使用言語の順位"</string>
+    <string name="language_picker_category_title" msgid="1792199453060454565">"優先言語の順番"</string>
     <string name="desc_current_default_language" msgid="1901157141663662859">"システムの言語"</string>
     <string name="locale_remove_menu" msgid="3521546263421387474">"削除"</string>
     <string name="add_a_language" msgid="2126220398077503271">"言語を追加"</string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"ロック解除方法"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"デバイスと同じ画面ロックを使用中"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"プライベート スペースの新規ロックを選択しますか？"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"自動ロック"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"プライベート スペースを自動的にロックする"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"プライベート スペースを自動的にロックする"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"デバイスを一定時間使用していないときに、プライベート スペースを自動的にロックできます"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"デバイスのロック時は毎回"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"操作が行われない状態で 5 分経過後"</string>
@@ -1708,7 +1707,7 @@
     <string name="force_stop" msgid="2681771622136916280">"強制停止"</string>
     <string name="archive" msgid="9074663845068632127">"アーカイブ"</string>
     <string name="restore" msgid="7622486640713967157">"復元"</string>
-    <string name="restoring_step_one" msgid="3465050101254272874">"復元しています"</string>
+    <string name="restoring_step_one" msgid="3465050101254272874">"復元中"</string>
     <string name="restoring_step_two" msgid="140484846432595108">"復元しています。"</string>
     <string name="restoring_step_three" msgid="3712883580876329811">"復元中…"</string>
     <string name="restoring_step_four" msgid="8966846882470446209">"復元しています…"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"タッチパッドの右下をタップすると他のオプションが表示されます"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"ポインタの速度"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"タッチパッド操作を見る"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ホームに移動"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"タッチパッドを 3 本の指で上にスワイプします"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"戻る"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"このアプリがバックグラウンドで電池を使用できるようになるため、電池を予想より早く消費する可能性があります。"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"解除"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"キャンセル"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"フル充電する"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"充電用アクセサリを確認してください"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"互換性のない充電方法の詳細"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"バッテリー マネージャ"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"自動, 入力, 自動入力, データ, パスキー, パスワード"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"変更"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"開く"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"何も選択されていません"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;このアプリが信頼できることを確認してください&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; は画面上の内容に基づいて、自動入力可能な情報を判別します。"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; を使用しますか？&lt;/b&gt;&lt;br/&gt; &lt;br/&gt; 今後は、新しいパスワード、パスキー、その他の情報がここに保存されます。&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; は画面上の内容に基づいて、自動入力可能な情報を判別します。"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"パスワード、パスキーと自動入力で優先的に使用するサービス"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;すべてのサービスを無効にしますか？&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;新しいパスワード、パスキー、その他の保存した情報は、ログイン時の自動入力で使用できなくなります。"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;優先的に使用するサービスを &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; に変更しますか？&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;今後は、新しいパスワード、パスキー、その他の情報がここに保存されます。&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; は画面上の内容に基づいて、自動入力可能な情報を判別します"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s を使用しますか？"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"OFF にする"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"変更"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"有効にできるサービスは 5 個だけです"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"他のサービスを追加するには、サービスを 1 つ以上無効にしてください"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s は自動入力できる情報を判断するために画面上に表示される情報を使用します。"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 23d2bd0..48a1ddb 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"განბლოკვის ხერხები"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"მოწყობილობის იდენტური ეკრანის დაბლოკვის მეთოდი"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"კერძო სივრცისთვის ახალი საკეტის არჩევა"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ავტომატურად ჩაკეტვა"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"კერძო სივრცის ავტომატურად ჩაკეტვა"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"კერძო სივრცის ავტომატურად ჩაკეტვა"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"შეგიძლიათ კერძო სივრცის ავტომატურად ჩაკეტვა, თუ არ იყენებთ მოწყობილობას გარკვეული პერიოდის განმავლობაში"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ყოველთვის, როდესაც მოწყობილობა ჩაიკეტება"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5-წუთიანი უმოქმედობის შემდეგ"</string>
@@ -1768,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"დაარქივება ვერ მოხერხდა"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> დაარქივებულია"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"აღდგენა ვერ მოხერხდა"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"მიმდინარეობს <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-ის აღდგენა"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"მიმდინარეობს <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ს აღდგენა"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"მიგრაციის სხვა პროცესი უკვე მიმდინარეობს."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"არ არის საკმარისი სივრცე შესანახად."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"აპი არ არსებობს."</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"სხვა ვარიანტ. შეეხეთ სენს. პანელის ქვედა მარჯვენა მხარეს"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"მანიშნებლის სიჩქარე"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"გაეცანით სენსორული ეკრანის ჟესტებს"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"მთავარზე გადასვლა"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"სენსორ. პანელზე სამი თითით გადაფურცლეთ ნებისმ. მიმართულებით"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"უკან დაბრუნება"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ეს აპი შეძლებს თქვენი ბატარეის ფონურ რეჟიმში მოხმარებას. ამან შესაძლოა ბატარეა სწრაფად ამოწუროს."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"წაშლა"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"გაუქმება"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"სრულად დატენვა"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"შეამოწმეთ დამტენი აქსესუარი"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"შეიტყვეთ მეტი შეუთავსებელი დატენვის შესახებ"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ავტომატური, შევსება, ავტომატური შევსება, მონაცემები, წვდომის გასაღებებიწვდომის გასაღები, პაროლი"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"შეცვლა"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"გახსნა"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"არჩეული არაფერია"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;დარწმუნდით, რომ ენდობით ამ აპს&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google-ის ავტომატური შევსება&gt;%1$s&lt;/xliff:g&gt; იყენებს თქვენს ეკრანზე არსებულ კონტენტს, რათა გაარკვიოს, რა შეიძლება შეივსოს ავტომატურად."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ახალი პაროლები, წვდომის გასაღებები და სხვა ინფორმაცია ამიერიდან აქ შეინახება. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; შეძლებს იმის გამოყენებას, რაც თქვენს ეკრანზეა, იმის განსაზღვრისთვის, თუ რის ავტომატური შევსებაა შესაძლებელი."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"სასურველი სერვისის მომწოდებელი პაროლების, წვდომის გასაღებების და ავტომატური შევსებისთვის"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Turn off all services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; პაროლები, წვდომის გასაღებები და სხვა შენახული ინფორმაცია ავტომატური შევსებისთვის არ იქნება ხელმისაწვდომი ანგარიშზე შესვლისას"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;შეცვალეთ თქვენი სასურველი მომსახურება შემდეგზე: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ახალი პაროლები, წვდომის გასაღებები და სხვა ინფორმაცია ამიერიდან აქ შეინახება. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; შეძლებს თქვენს ეკრანზე განთავსებული ინფორმაციის გამოყენებას იმის განსაზღვრისთვის, თუ რისი შევსებაა ავტომატურად შესაძლებელი"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"გსურთ %1$s-ის გამოყენება?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"გამორთვა"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"შეცვლა"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"შეგიძლიათ ჩართული გქონდეთ მხოლოდ 5 მომსახურება"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"ახლის დასამატებლად გამორთეთ სულ მცირე ერთი მომსახურება მაინც"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s იყენებს თქვენს ეკრანზე გამოსახულ კონტენტს, რათა გაარკვიოს, რა შეიძლება შეივსოს ავტომატურად."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"დამკვრელის დამალვა"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"დამკვრელის ჩვენება"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"მედია"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"კამერის პროგრამული უზრუნველყოფის გაფართოებების დაშვება"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"რთავს კამერის უახლესი ფუნქციების ნაგულისხმევ პროგრამულ უზრუნველყოფას, როგორიცაა არავიზუალური ვიდეოგრაფია."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ჩაირთვება Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"ინტერნეტი"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-ები"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 6bfe502..e1bd1bc 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Құлыпты ашу тәсілдері"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Құрылғының экран құлпымен бірдей"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Құпия кеңістікке жаңа құлып таңдау керек пе?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Автоматты түрде құлыптау"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Құпия кеңістікті автоматты түрде құлыптау"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Құпия кеңістікті автоматты түрде құлыптау"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Құрылғыңызды белгілі бір уақыт бойы қолданбаған болсаңыз, құпия кеңістікті автоматты түрде құлыптай аласыз."</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Құрылғы құлыпталған сайын"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 минуттық әрекетсіздіктен кейін"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Өрнек"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Құпия сөз"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Құрылғы құлпын ашудың барлық түрі өшірілсін бе?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Профильді қорғауды жою керек пе?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Жоғалған немесе ұрланған жағдайда, өрнек телефоныңызды қорғайды."</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Жоғалған немесе ұрланған жағдайда, өрнек телефоныңызды қорғайды.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Бұл әрекет құрылғыда сақталған саусақ ізі үлгісін жояды. Бет үлгіңіз де біржола әрі қауіпсіз жойылады. Қолданбаларға аутентификациялану үшін бетіңізді немесе саусақ ізін пайдалана алмайтын боласыз."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Жоғалған немесе ұрланған жағдайда, PIN коды телефоныңызды қорғайды."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"PIN коды сияқты сақталған деректерді жоғалтасыз.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Контактісіз төлеу үшін реттелген карталар өшіріледі.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Құрылғы құлпын ашуды қажет ететін Wallet пен тағы басқа қолданбалар дұрыс жұмыс істемеуі мүмкін."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Жоғалған немесе ұрланған жағдайда, PIN коды телефоныңызды қорғайды.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Бұл әрекет құрылғыда сақталған саусақ ізі үлгісін де жояды. Қолданбаларда аутентификациялану үшін саусақ ізін пайдалана алмайтын боласыз."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"PIN коды және саусақ ізі үлгісі сияқты сақталған деректерді жоғалтасыз.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Контактісіз төлеу үшін реттелген карталар өшіріледі.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Құрылғы құлпын ашуды қажет ететін Wallet пен тағы басқа қолданбалар дұрыс жұмыс істемеуі мүмкін."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Жоғалған немесе ұрланған жағдайда, PIN коды телефоныңызды қорғайды.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Бет үлгіңіз біржола әрі қауіпсіз жойылады. Қолданбаларда аутентификациялану үшін бетіңізді пайдалана алмайтын боласыз."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"PIN коды жән бет үлгісі сияқты сақталған деректерді жоғалтасыз.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Контактісіз төлеу үшін реттелген карталар өшіріледі.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Құрылғы құлпын ашуды қажет ететін Wallet пен тағы басқа қолданбалар дұрыс жұмыс істемеуі мүмкін."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Жоғалған немесе ұрланған жағдайда, PIN коды телефоныңызды қорғайды.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Бұл әрекет құрылғыда сақталған саусақ ізі үлгісін жояды. Бет үлгіңіз де біржола әрі қауіпсіз жойылады. Қолданбаларға аутентификациялану үшін бетіңізді немесе саусақ ізін пайдалана алмайтын боласыз."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"PIN коды, бет және саусақ ізі үлгілері сияқты сақталған деректерді жоғалтасыз.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Контактісіз төлеу үшін реттелген карталар өшіріледі.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Құрылғы құлпын ашуды қажет ететін Wallet пен тағы басқа қолданбалар дұрыс жұмыс істемеуі мүмкін."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Жоғалған немесе ұрланған жағдайда, құпия сөз телефоныңызды қорғайды."</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Жоғалған немесе ұрланған жағдайда, құпия сөз телефоныңызды қорғайды.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Қосымша опцияларды көру үшін сенсорлық тақтаның төменгі оң жақ бұрышын түртіңіз."</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Меңзер жылдамдығы"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Сенсорлық тақта қимылдарын үйрену"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Негізгі экранға өту"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Үш саусақпен сенсорлық тақта бетінің кез келген жерінен жоғары сырғытыңыз."</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Артқа"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Бұл қолданба батареяны фондық режимде пайдаланады. Батареяның заряды тез азаюы мүмкін."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Алу"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Бас тарту"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Толық зарядтау"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Зарядтау құрылғысын тексеріңіз"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Үйлесімсіз зарядтау туралы толық ақпарат"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Батарея шығынын қадағалау"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"авто, толтыру, автотолтыру, дерек, кіру кілті, құпия сөз"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Өзгерту"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Ашу"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ешқайсысы таңдалмаған."</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Осы қолданбаның қауіпсіз екеніне көз жеткізіңіз&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; экранда көрсетілгенді пайдаланып, нені автоматты түрде толтыруға болатынын анықтайды."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;? қолданбасын пайдалану&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Енді жаңа құпия сөздер, кіру кілттері мен басқа да ақпарат осы жерде сақталады. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; қолданбасы нені автотолтыруға болатынын анықтау үшін экраныңыздағы деректерді пайдалана алады."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Құпия сөздер мен кіру кілттеріне және автотолтыруға арналған қызметтер"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Барлық қызметті өшіріңіз?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Аккаунтқа кірген кезде, құпия сөздерді, кіру кілттері мен басқа да ақпаратты автотолтыру мүмкін болмай қалады."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Қалаулы қызметіңізді мына қолданбаға өзгертіңіз: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Жаңа құпия сөздер, кіру кілттері және басқа да ақпарат бұдан былай осы жерде сақталады. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; қолданбасы нені автотолтыруға болатынын анықтау үшін экраныңыздағы деректерді пайдалана алады."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s пайдаланылсын ба?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Өшіру"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Өзгерту"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Тек 5 қызметті қосып қоюға болады"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Басқасын қосу үшін ең кемі 1 қызметті өшіріңіз."</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s экранда көрсетілгенді нені автоматты түрде толтыруға болатынын анықтау үшін пайдаланады."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ойнатқышты жасыру"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Ойнатқышты көрсету"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"мультимeдиа"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Камера бағдарламалық құралының кеңейтімдеріне рұқсат беру"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Визуалдық емес бейнеграфия сияқты озық камера функцияларының бағдарламалық құралын әдепкісінше іске қосуды орындайды."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth қосылады."</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Интернет"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM карталары"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 1d0583d..15695c6 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"វិធី​ដោះសោ"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ដូចគ្នានឹងការចាក់សោអេក្រង់ឧបករណ៍"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ជ្រើសរើសការចាក់សោថ្មីសម្រាប់លំហឯកជនឬ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ចាក់សោដោយស្វ័យប្រវត្តិ"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ចាក់សោលំហឯកជនដោយស្វ័យប្រវត្តិ"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ចាក់សោលំហឯកជនដោយស្វ័យប្រវត្តិ"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"អ្នកអាចចាក់សោលំហឯកជនរបស់អ្នកដោយស្វ័យប្រវត្តិ ប្រសិនបើអ្នកមិនបានប្រើឧបករណ៍របស់អ្នកមួយរយៈ"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"រាល់ពេលឧបកណ៍ចាក់សោ"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"ក្រោយពេលអសកម្ម 5 នាទី"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"ចុចជ្រុងខាងស្ដាំផ្នែកខាងក្រោមនៃផ្ទាំងប៉ះសម្រាប់ជម្រើសបន្ថែម"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"ល្បឿន​ទស្សន៍ទ្រនិច"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ស្វែងយល់អំពីចលនាផ្ទាំងប៉ះ"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ទៅអេក្រង់ដើម"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"អូសឡើងលើដោយប្រើម្រាមដៃបី​នៅកន្លែងណាមួយ​នៅលើផ្ទាំងប៉ះរបស់អ្នក"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ថយ​ក្រោយ"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"កម្មវិធី​នេះ​​​នឹងអាចប្រើថ្ម​នៅ​ផ្ទៃ​ខាង​ក្រោយបាន។ ថ្ម​របស់អ្នក​អាចនឹង​​ឆាប់អស់​ជាង​ការរំពឹងទុក។"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"លុប"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"បោះបង់"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"សាក​ថ្ម​រហូត​ដល់​ពេញ"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ពិនិត្យមើលគ្រឿងសាកថ្ម"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"ស្វែងយល់បន្ថែមអំពី​ការសាកថ្មមិនត្រូវគ្នា"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"កម្មវិធី​គ្រប់គ្រង​ថ្ម"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ស្វ័យប្រវត្តិ, បំពេញ, បំពេញស្វ័យប្រវត្តិ, ទិន្នន័យ, កូដសម្ងាត់, ពាក្យ​សម្ងាត់"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"ផ្លាស់ប្ដូរ"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"បើក"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"មិនបាន​ជ្រើសរើសទេ"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ត្រូវ​ប្រាកដថា​អ្នក​ទុកចិត្ត​កម្មវិធី​នេះ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google បំពេញស្វ័យប្រវត្តិ&gt;%1$s&lt;/xliff:g&gt; ប្រើប្រាស់​អ្វី​ដែល​មាននៅ​លើ​អេក្រង់​របស់អ្នក ដើម្បី​កំណត់​អ្វីដែល​អាចបំពេញ​ដោយ​ស្វ័យប្រវត្តិ។"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;ប្រើ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ឬ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ពាក្យសម្ងាត់ កូដសម្ងាត់ថ្មីៗ និងព័ត៌មានផ្សេងទៀតនឹងត្រូវបានរក្សាទុកនៅទីនេះចាប់ពីពេលនេះតទៅ។ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; អាចនឹងប្រើប្រាស់អ្វីដែលមាននៅលើអេក្រង់របស់អ្នក ដើម្បីកំណត់ថាអាចបំពេញអ្វីខ្លះដោយស្វ័យប្រវត្តិ។"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"សេវាកម្មដែលចង់ប្រើសម្រាប់ពាក្យសម្ងាត់ កូដសម្ងាត់ និងការបំពេញស្វ័យប្រវត្តិ"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;បិទសេវាកម្មទាំងអស់ឬ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ពាក្យសម្ងាត់ កូដសម្ងាត់ និងព័ត៌មានដែលបានរក្សាទុកផ្សេងទៀតនឹងមិនអាចប្រើប្រាស់សម្រាប់បំពេញស្វ័យប្រវត្តិបានទេ នៅពេលអ្នកចូលគណនី"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;ផ្លាស់ប្ដូរសេវាកម្មជាអាទិភាពរបស់អ្នកទៅ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ពាក្យសម្ងាត់ កូដសម្ងាត់ថ្មីៗ និងព័ត៌មានផ្សេងទៀតនឹងត្រូវបានរក្សាទុកនៅទីនេះចាប់ពីពេលនេះតទៅ។ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; អាចនឹងប្រើប្រាស់អ្វីដែលមាននៅលើអេក្រង់របស់អ្នក ដើម្បីកំណត់ថាអាចបំពេញអ្វីខ្លះដោយស្វ័យប្រវត្តិ"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"ប្រើប្រាស់ %1$s ឬ?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"បិទ"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"ផ្លាស់ប្ដូរ"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"អ្នកអាចបើកសេវាកម្មតែ 5 ប៉ុណ្ណោះ"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"បិទសេវាកម្មយ៉ាងហោចណាស់ 1 ដើម្បីបញ្ចូលសេវាកម្មមួយទៀត"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ប្រើអ្វីដែលមាននៅលើអេក្រង់របស់អ្នក ដើម្បីកំណត់ពីអ្វីដែលអាចបំពេញបានដោយស្វ័យប្រវត្តិ។"</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"លាក់​កម្មវិធីចាក់"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"បង្ហាញ​កម្មវិធីចាក់"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"មេឌៀ"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"អនុញ្ញាតកម្មវិធីបន្ថែមនៃកម្មវិធីកាមេរ៉ា"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"បើកកម្មវិធីលំនាំដើមនៃមុខងារកាមេរ៉ាកម្រិតខ្ពស់ ដូចជា ការថតវីដេអូ Eyes Free ជាដើម។"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ប៊្លូធូសនឹងបើក"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"អ៊ីនធឺណិត"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"ស៊ី​ម"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 22f7d62..0c7c579 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"ಅನ್‌ಲಾಕ್ ಮಾಡುವ ವಿಧಾನಗಳು"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ಸಾಧನದ ಸ್ಕ್ರೀನ್ ಲಾಕ್‌ ಅನ್ನೇ ಬಳಸಲಾಗುತ್ತಿದೆ"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ಪ್ರೈವೆಟ್ ಸ್ಪೇಸ್‌ಗೆ ಹೊಸ ಲಾಕ್ ಆರಿಸಬೇಕೇ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಕ್ ಮಾಡಿ"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ಪ್ರೈವೆಟ್ ಸ್ಪೇಸ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಕ್ ಮಾಡಿ"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ಪ್ರೈವೆಟ್ ಸ್ಪೇಸ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಕ್ ಮಾಡಿ"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"ನೀವು ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ನಿಮ್ಮ ಸಾಧನವನ್ನು ಬಳಸದಿದ್ದರೆ ನಿಮ್ಮ ಪ್ರೈವೆಟ್ ಸ್ಪೇಸ್ ಅನ್ನು ನೀವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಕ್ ಮಾಡಬಹುದು"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ಪ್ರತಿ ಬಾರಿ ಸಾಧನ ಲಾಕ್ ಆಗುತ್ತದೆ"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 ನಿಮಿಷಗಳ ನಿಷ್ಕ್ರಿಯತೆಯ ನಂತರ"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗೆ ಟಚ್‌ಪ್ಯಾಡ್‌ನ ಕೆಳ ಬಲ ಮೂಲೆಯನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"ಪಾಯಿಂಟರ್ ವೇಗ"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ಟಚ್‌ಪ್ಯಾಡ್ ಗೆಸ್ಚರ್‌ಗಳನ್ನು ಕಲಿಯಿರಿ"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ಹೋಮ್‌ಗೆ ಹೋಗಿ"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"ಟಚ್‌ಪ್ಯಾಡ್‌ನಲ್ಲಿ ಎಲ್ಲಿಯಾದರೂ ಮೂರು ಬೆರಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ಹಿಂದಿರುಗಿ"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಬಳಸಲು ಈ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ನಿಮ್ಮ ಬ್ಯಾಟರಿ ನಿರೀಕ್ಷಿಸಿದ ಅವಧಿಗಿಂತ ಮುನ್ನವೇ ಮುಕ್ತಾಯವಾಗಬಹುದು."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"ತೆಗೆದುಹಾಕಿ"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"ರದ್ದು ಮಾಡಿ"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"ಸಂಪೂರ್ಣವಾಗಿ ಚಾರ್ಜ್ ಮಾಡಿ"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ಚಾರ್ಜಿಂಗ್ ಆ್ಯಕ್ಸೆಸರಿಯನ್ನು ಪರಿಶೀಲಿಸಿ"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"ಹೊಂದಾಣಿಕೆಯಾಗದ ಚಾರ್ಜಿಂಗ್ ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ಬ್ಯಾಟರಿ ನಿರ್ವಾಹಕ"</string>
@@ -3837,13 +3841,13 @@
     <string name="usb_summary_MIDI_power" msgid="1184681982025435815">"MIDI ಮತ್ತು ಪವರ್ ವಿತರಣೆ"</string>
     <string name="usb_summary_UVC_power" msgid="226810354412154061">"ವೆಬ್‌ಕ್ಯಾಮ್ ಮತ್ತು ವಿದ್ಯುತ್ ಸರಬರಾಜು"</string>
     <string name="background_check_pref" msgid="5304564658578987535">"ಹಿನ್ನೆಲೆ ಪರಿಶೀಲಿಸಿ"</string>
-    <string name="assist_access_context_title" msgid="5201495523514096201">"ಸ್ಕ್ರೀನ್‍‍ನಿಂದ ಪಠ್ಯವನ್ನು ಬಳಸಿ"</string>
-    <string name="assist_access_context_summary" msgid="6951814413185646275">"ಸಹಾಯಕ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಪರದೆ ವಿಷಯಗಳನ್ನು ಪಠ್ಯದಂತೆ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸಿ"</string>
+    <string name="assist_access_context_title" msgid="5201495523514096201">"ಸ್ಕ್ರೀನ್‍‍ನಲ್ಲಿನ ಪಠ್ಯವನ್ನು ಬಳಸಿ"</string>
+    <string name="assist_access_context_summary" msgid="6951814413185646275">"ಅಸಿಸ್ಟ್ ಆ್ಯಪ್‌ಗೆ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿನ ಕಂಟೆಂಟ್‌ಗಳನ್ನು ಪಠ್ಯವಾಗಿ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಅನುಮತಿಸಿ"</string>
     <string name="assist_access_screenshot_title" msgid="4395902231753643633">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಬಳಸಿ"</string>
-    <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"ಸಹಾಯಕ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಪರದೆಯ ಚಿತ್ರವನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸಿ"</string>
-    <string name="assist_flash_title" msgid="5449512572885550108">"ಫ್ಲ್ಯಾಶ್‌ ಪರದೆ"</string>
-    <string name="assist_flash_summary" msgid="3032289860177784594">"ಪರದೆ ಅಥವಾ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ನಿಂದ ಪಠ್ಯವನ್ನು ಸಹಾಯ ಅಪ್ಲಿಕೇಶನ್ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿದಾಗ ಪರದೆಯ ಅಂಚುಗಳು ಫ್ಲ್ಯಾಶ್‌ ಆಗುವುದು"</string>
-    <string name="assist_footer" msgid="8248015363806299068">"ನೀವು ವೀಕ್ಷಿಸುತ್ತಿರುವ ಪರದೆಯ ಮಾಹಿತಿಯನ್ನು ಆಧರಿಸಿ ಸಹಾಯಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದು. ನಿಮಗೆ ಸಂಪೂರ್ಣ ಸಹಾಯ ನೀಡಲು ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಲಾಂಚರ್ ಮತ್ತು ಧ್ವನಿ ಇನ್‌ಪುಟ್ ಸೇವೆ ಎರಡನ್ನೂ ಬೆಂಬಲಿಸುತ್ತವೆ."</string>
+    <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"ಅಸಿಸ್ಟ್ ಆ್ಯಪ್‌ಗೆ ಸ್ಕ್ರೀನ್‌ನ ಚಿತ್ರವನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಅನುಮತಿಸಿ"</string>
+    <string name="assist_flash_title" msgid="5449512572885550108">"ಸ್ಕ್ರೀನ್ ಫ್ಲ್ಯಾಶ್‌ ಮಾಡಿ"</string>
+    <string name="assist_flash_summary" msgid="3032289860177784594">"ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿನ ಪಠ್ಯ ಅಥವಾ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ ಅನ್ನು ಅಸಿಸ್ಟ್ ಆ್ಯಪ್ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿದಾಗ ಸ್ಕ್ರೀನ್‌ನ ಅಂಚುಗಳನ್ನು ಫ್ಲ್ಯಾಶ್‌ ಮಾಡಿ"</string>
+    <string name="assist_footer" msgid="8248015363806299068">"ಅಸಿಸ್ಟ್ ಆ್ಯಪ್‌ಗಳು ನೀವು ವೀಕ್ಷಿಸುತ್ತಿರುವ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿನ ಮಾಹಿತಿಯನ್ನು ಆಧರಿಸಿ ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಲ್ಲವು. ನಿಮಗೆ ಸಂಪೂರ್ಣ ಸಹಾಯ ನೀಡಲು ಕೆಲವು ಆ್ಯಪ್‌ಗಳು ಲಾಂಚರ್ ಮತ್ತು ಧ್ವನಿ ಇನ್‌ಪುಟ್ ಸೇವೆ ಎರಡನ್ನೂ ಬೆಂಬಲಿಸುತ್ತವೆ."</string>
     <string name="average_memory_use" msgid="717313706368825388">"ಸರಾಸರಿ ಮೆಮೊರಿ ಬಳಕೆ"</string>
     <string name="maximum_memory_use" msgid="2171779724001152933">"ಗರಿಷ್ಠ ಮೆಮೊರಿ ಬಳಕೆ"</string>
     <string name="memory_usage" msgid="5594133403819880617">"ಮೆಮೊರಿ ಬಳಕೆ"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ಆಟೋ, ಫಿಲ್, ಆಟೋಫಿಲ್, ಡೇಟಾ, ಪಾಸ್‌ಕೀ, ಪಾಸ್‌ವರ್ಡ್"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"ಬದಲಾಯಿಸಿ"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"ತೆರೆಯಿರಿ"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"ಯಾವುದನ್ನೂ ಆಯ್ಕೆಮಾಡಿಲ್ಲ"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ನಿಮಗೆ ಈ ಅಪ್ಲಿಕೇಶನ್ ಮೇಲೆ ವಿಶ್ವಾಸವಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ &lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ಯಾವ ಕ್ಷೇತ್ರಗಳನ್ನು ಸ್ವಯಂ-ಭರ್ತಿ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‍ನಲ್ಲಿನ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ಈಗಿನಿಂದ ಹೊಸ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಪಾಸ್‌ಕೀಗಳು ಮತ್ತು ಇತರ ಮಾಹಿತಿಯನ್ನು ಇಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ. ಏನನ್ನು ಆಟೋಫಿಲ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲಿರುವುದನ್ನು ಬಳಸಬಹುದು."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಪಾಸ್‌ಕೀಗಳು ಮತ್ತು ಆಟೋಫಿಲ್‌ಗಾಗಿ ಆದ್ಯತೆಯ ಸೇವೆಗಳು"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;ಎಲ್ಲಾ ಸೇವೆಗಳನ್ನು ಆಫ್ ಮಾಡಬೇಕೆ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿದಾಗ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಪಾಸ್‌ಕೀಗಳು ಹಾಗೂ ಇತರ ಸೇವ್‌ ಮಾಡಿದ ಮಾಹಿತಿಯು ಆಟೋಫಿಲ್ ಮಾಡಲು ಲಭ್ಯವಿರುವುದಿಲ್ಲ"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;ಇದಕ್ಕೆ ನಿಮ್ಮ ಆದ್ಯತೆಯ ಸೇವೆಯನ್ನು ಬದಲಾಯಿಸಿ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ಇನ್ನು ಮುಂದೆ ಹೊಸ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಪಾಸ್‌ಕೀಗಳು ಮತ್ತು ಇತರ ಮಾಹಿತಿಯನ್ನು ಇಲ್ಲಿ ಸೇವ್ ಮಾಡಲಾಗುತ್ತದೆ. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ಏನನ್ನು ಆಟೋಫಿಲ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲಿರುವುದನ್ನು ಬಳಸಬಹುದು"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s ಬಳಸಬೇಕೇ?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ಆಫ್ ಮಾಡಿ"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"ಬದಲಾಯಿಸಿ"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"ನೀವು ಕೇವಲ 5 ಸೇವೆಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಬಹುದು"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"ಮತ್ತೊಂದು ಸೇವೆಯನ್ನು ಸೇರಿಸಲು ಕನಿಷ್ಠ 1 ಸೇವೆಯನ್ನು ಆಫ್ ಮಾಡಿ"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"ಯಾವುದನ್ನು ಆಟೋಫಿಲ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು %1$s ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲಿರುವುದನ್ನು ಬಳಸುತ್ತದೆ."</string>
@@ -4357,7 +4362,7 @@
     <string name="install_type_instant" msgid="7685381859060486009">"ತತ್‌ಕ್ಷಣದ ಅಪ್ಲಿಕೇಶನ್"</string>
     <string name="automatic_storage_manager_deactivation_warning" msgid="4905106133215702099">"ಸಂಗ್ರಹಣೆ ನಿರ್ವಾಹಕವನ್ನು ಆಫ್ ಮಾಡಬೇಕೆ?"</string>
     <string name="zen_suggestion_title" msgid="4555260320474465668">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಅನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಿ"</string>
-    <string name="zen_suggestion_summary" msgid="1984990920503217">"ಫೋಕಸ್‌ ಆಗಿ ಇರಲು ಅಧಿಸೂಚನೆಗಳನ್ನು ವಿರಾಮಗೊಳಿಸಿ"</string>
+    <string name="zen_suggestion_summary" msgid="1984990920503217">"ಫೋಕಸ್‌ ಆಗಿ ಇರಲು ನೋಟಿಫಿಕೇಶನ್‌ಗಳನ್ನು ವಿರಾಮಗೊಳಿಸಿ"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ಫೀಚರ್ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ನಿಮ್ಮ ಫೋನ್‌ನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತದೆ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"ಯಾವಾಗಲೂ ಕ್ರ್ಯಾಶ್ ಸಂವಾದವನ್ನು ತೋರಿಸಿ"</string>
@@ -4610,7 +4615,7 @@
     <string name="dsds_notification_after_suw_text" msgid="1287357774676361084">"ನಿಮ್ಮ ಸಕ್ರಿಯ ಸಿಮ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ ಅಥವಾ ಒಟ್ಟಿಗೆ 2 ಸಿಮ್‌ಗಳನ್ನು ಬಳಸಿ"</string>
     <string name="choose_sim_title" msgid="66509047151583877">"ಬಳಸಲು SIM ಒಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="choose_sim_text" msgid="8992163497852069924">"{count,plural, =1{ಈ ಸಾಧನದಲ್ಲಿ 1 SIM ಲಭ್ಯವಿದೆ, ಆದರೆ ಒಂದು ಬಾರಿಗೆ ಒಂದನ್ನು ಮಾತ್ರ ಬಳಸಬಹುದಾಗಿದೆ}=2{ಈ ಸಾಧನದಲ್ಲಿ 2 SIM ಗಳು ಲಭ್ಯವಿವೆ, ಆದರೆ ಒಂದು ಬಾರಿಗೆ ಒಂದನ್ನು ಮಾತ್ರ ಬಳಸಬಹುದಾಗಿದೆ}one{ಈ ಸಾಧನದಲ್ಲಿ # SIM ಗಳು ಲಭ್ಯವಿವೆ, ಆದರೆ ಒಂದು ಬಾರಿಗೆ ಒಂದನ್ನು ಮಾತ್ರ ಬಳಸಬಹುದಾಗಿದೆ}other{ಈ ಸಾಧನದಲ್ಲಿ # SIM ಗಳು ಲಭ್ಯವಿವೆ, ಆದರೆ ಒಂದು ಬಾರಿಗೆ ಒಂದನ್ನು ಮಾತ್ರ ಬಳಸಬಹುದಾಗಿದೆ}}"</string>
-    <string name="choose_sim_activating" msgid="6485547671356386998">"<xliff:g id="ELLIPSIS">…</xliff:g>ಆನ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+    <string name="choose_sim_activating" msgid="6485547671356386998">"ಆನ್ ಮಾಡಲಾಗುತ್ತಿದೆ<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
     <string name="choose_sim_could_not_activate" msgid="866488735834045525">"ಈಗ ಈ SIM ಅನ್ನು ಆನ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
     <string name="switch_sim_dialog_title" msgid="5407316878973237773">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ಅನ್ನು ಬಳಸಬೇಕೇ?"</string>
     <string name="switch_sim_dialog_text" msgid="7530186862171635464">"ಮೊಬೈಲ್ ಡೇಟಾ, ಕರೆಗಳು ಮತ್ತು SMS‌ ಗಾಗಿ <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"ಪ್ಲೇಯರ್ ಮರೆಮಾಡಿ"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"ಪ್ಲೇಯರ್ ತೋರಿಸಿ"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"ಮಾಧ್ಯಮ"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"ಕ್ಯಾಮರಾ ಸಾಫ್ಟ್‌ವೇರ್ ಎಕ್ಸ್‌ಟೆನ್ಶನ್‌ಗಳನ್ನು ಅನುಮತಿಸಿ"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"ಕಣ್ಣು ಮುಕ್ತ ವೀಡಿಯೊಗ್ರಫಿಯಂತಹ ಸುಧಾರಿತ ಕ್ಯಾಮರಾ ಫೀಚರ್‌ಗಳ ಡೀಫಾಲ್ಟ್ ಸಾಫ್ಟ್‌ವೇರ್ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗುತ್ತದೆ"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"ಇಂಟರ್ನೆಟ್"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"ಸಿಮ್‌ಗಳು"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index c935e34..f31bf7d 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"잠금 해제 방법"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"기기 화면 잠금과 동일"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"새로운 비공개 스페이스용 잠금을 선택하시겠습니까?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"자동 잠금"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"비공개 스페이스 자동 잠금"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"비공개 스페이스 자동 잠금"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"일정 시간 동안 기기를 사용하지 않은 경우 비공개 스페이스를 자동으로 잠글 수 있습니다."</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"기기를 잠글 때마다"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5분 동안 사용하지 않은 경우"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"패턴"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"비밀번호"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"모든 유형의 기기 잠금 해제를 삭제하시겠습니까?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"프로필 보호 기능을 삭제하시겠습니까?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"분실하거나 도난당한 경우 패턴으로 휴대전화를 보호합니다."</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"분실하거나 도난당한 경우 패턴으로 휴대전화를 보호합니다.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>기기에 저장된 지문 모델이 삭제됩니다. 또한 얼굴 모델이 영구적으로 안전하게 삭제됩니다. 앱 내에서 얼굴 또는 지문 인증을 사용할 수 없게 됩니다."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"분실하거나 도난당한 경우 PIN으로 휴대전화를 보호합니다."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"PIN 등 저장된 데이터가 손실됩니다.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>비접촉 결제가 설정된 카드가 삭제됩니다.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>기기 잠금 해제가 필요한 월렛 및 기타 앱이 제대로 작동하지 않을 수도 있습니다."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"분실하거나 도난당한 경우 PIN으로 휴대전화를 보호합니다.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>또한 기기에 저장된 지문 모델이 삭제됩니다. 앱 내에서 지문 인증을 사용할 수 없게 됩니다."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"PIN, 지문 모델 등 저장된 데이터가 손실됩니다.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>비접촉 결제가 설정된 카드가 삭제됩니다.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>기기 잠금 해제가 필요한 월렛 및 기타 앱이 제대로 작동하지 않을 수도 있습니다."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"분실하거나 도난당한 경우 PIN으로 휴대전화를 보호합니다.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>또한 얼굴 모델이 영구적으로 안전하게 삭제됩니다. 앱 내에서 얼굴 인증을 사용할 수 없게 됩니다."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"PIN, 얼굴 모델 등 저장된 데이터가 손실됩니다.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>비접촉 결제가 설정된 카드가 삭제됩니다.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>기기 잠금 해제가 필요한 월렛 및 기타 앱이 제대로 작동하지 않을 수도 있습니다."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"분실하거나 도난당한 경우 PIN으로 휴대전화를 보호합니다.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>기기에 저장된 지문 모델이 삭제됩니다. 또한 얼굴 모델이 영구적으로 안전하게 삭제됩니다. 앱 내에서 얼굴 또는 지문 인증을 사용할 수 없게 됩니다."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"PIN, 얼굴 모델, 지문 모델 등 저장된 데이터가 손실됩니다.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>비접촉 결제가 설정된 카드가 삭제됩니다.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>기기 잠금 해제가 필요한 월렛 및 기타 앱이 제대로 작동하지 않을 수도 있습니다."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"분실하거나 도난당한 경우 비밀번호로 휴대전화를 보호합니다."</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"분실하거나 도난당한 경우 비밀번호로 휴대전화를 보호합니다.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"더 많은 옵션을 확인하려면 터치패드 오른쪽 하단을 탭합니다"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"포인터 속도"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"터치패드 동작 알아보기"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"홈으로 이동"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"터치패드 아무 곳에서나 세 손가락을 사용해 위로 스와이프하세요."</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"뒤로"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"이 앱이 백그라운드에서 배터리를 사용할 수 있게 되며 배터리가 예상보다 빨리 소진될 수 있습니다."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"삭제"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"취소"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"완전히 충전하기"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"충전 액세서리 확인"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"호환되지 않는 충전에 관해 자세히 알아보기"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"배터리 관리"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"자동, 완성, 자동 완성, 데이터, 패스키, 비밀번호"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"변경"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"열기"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"선택한 항목 없음"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;신뢰할 수 있는 앱인지 확인하세요&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt;에서는 자동 완성할 수 있는 항목을 결정하기 위해 화면의 내용을 사용합니다."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;을(를) 사용하시겠습니까?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; 지금부터 새로운 비밀번호, 패스키, 기타 정보가 여기에 저장됩니다. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;에서 자동 완성할 수 있는 항목을 파악하기 위해 화면에 표시된 내용을 사용할 수도 있습니다."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"비밀번호, 패스키 및 자동 완성 기본 서비스"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;모든 서비스를 사용 중지하시겠습니까?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; 로그인할 때 비밀번호, 패스키 및 기타 저장된 정보를 자동 입력에 사용할 수 없습니다."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;기본 서비스를 &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;(으)로 변경하시겠습니까?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; 이제부터 새 비밀번호, 패스키 및 기타 정보가 여기에 저장됩니다. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;에서 자동 완성할 수 있는 항목을 파악하기 위해 화면에 표시된 내용을 사용할 수도 있습니다."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s을(를) 사용하시겠습니까?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"사용 중지"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"변경"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"5개 서비스만 사용할 수 있음"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"다른 서비스를 추가하려면 서비스를 1개 이상 사용 중지하세요."</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s에서 내 화면에 있는 항목을 사용해 자동 완성 항목을 결정합니다."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"플레이어를 숨깁니다."</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"플레이어 표시"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"미디어"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"카메라 소프트웨어 확장 프로그램 허용"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Eyes Free 동영상과 같은 고급 카메라 기능의 기본 소프트웨어 구현을 사용 설정합니다."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"블루투스를 사용 설정함"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"인터넷"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 22795c4..5914272 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Кулпуну ачуу жолдору"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Түзмөктүн экраны кулпулангандай"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Жеке мейкиндик үчүн жаңы кулпуну тандайсызбы?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Автоматтык түрдө кулпулоо"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Жеке мейкиндикти автоматтык түрдө кулпулоо"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Жеке мейкиндикти автоматтык түрдө кулпулоо"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Эгер түзмөгүңүздү белгилүү бир убакыт бою колдонбосоңуз, жеке мейкиндигиңизди автоматтык түрдө кулпулай аласыз"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Түзмөк кулпуланган сайын"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 мүнөт ишсиз тургандан кийин"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Графикалык ачкыч"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Сырсөз"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Түзмөк кулпусун ачуунун бардык түрлөрү өчүрүлсүнбү?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Профилди коргоо алынып салынсынбы?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Телефонуңуз жоголсо же уурдалып кетсе аны графикалык ачкыч коргойт"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Графикалык ачкыч жоголгон же уурдалган телефондогу нерселерди коргойт.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Ал түзмөгүңүздөгү манжа изинин үлгүсүн өчүрөт. Жүзүңүздүн үлгүсү да биротоло өчөт. Колдонмолордо аутентификациялоо үчүн жүзүңүздү же манжа изиңизди колдоно албай каласыз."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN код жоголгон же уурдалган телефондогу нерселерди коргойт"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"PIN кодуңуз сыяктуу сакталган дайындарды жоготосуз.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Тийгизип төлөө үчүн туураланган карталар өчүрүлөт.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Капчыктар жана түзмөктүн кулпусун ачууну талап кылган башка колдонмолор туура иштебей калышы мүмкүн."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN код жоголгон же уурдалган телефондогу нерселерди коргойт.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Ошондой эле, ал түзмөгүңүздөгү манжа изинин үлгүсүн өчүрөт. Колдонмолордо аутентификациялоо үчүн манжа изиңизди колдоно албай каласыз."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"PIN код жана манжа изи үлгүсү сыяктуу сакталган дайындарды жоготосуз.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Тийгизип төлөө үчүн туураланган карталар өчүрүлөт.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Капчыктар жана түзмөктүн кулпусун ачууну талап кылган башка колдонмолор туура иштебей калышы мүмкүн."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN код жоголгон же уурдалган телефондогу нерселерди коргойт.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Жүзүңүздүн үлгүсү дагы биротоло өчөт. Колдонмолордо аутентификациялоо үчүн жүзүңүздү колдоно албай каласыз."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"PIN код жана жүздүн үлгүсү сыяктуу сакталган дайындарды жоготосуз.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Тийгизип төлөө үчүн туураланган карталар өчүрүлөт.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Капчыктар жана түзмөктүн кулпусун ачууну талап кылган башка колдонмолор туура иштебей калышы мүмкүн."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN код жоголгон же уурдалган телефондогу нерселерди коргойт.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Ал түзмөгүңүздөгү манжа изинин үлгүсүн өчүрөт. Жүзүңүздүн үлгүсү да биротоло өчөт. Колдонмолордо аутентификациялоо үчүн жүзүңүздү же манжа изиңизди колдоно албай каласыз."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"PIN код, жүздүн жана манжа изинин үлгүлөрү сыяктуу сакталган дайындарды жоготосуз.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Тийгизип төлөө үчүн туураланган карталар өчүрүлөт.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Капчыктар жана түзмөктүн кулпусун ачууну талап кылган башка колдонмолор туура иштебей калышы мүмкүн."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Сырсөз жоголгон же уурдалган телефондогу нерселерди коргойт"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Сырсөз жоголгон же уурдалган телефондогу нерселерди коргойт.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Дагы параметрлерди көрүү үчүн сенсордук тактанын ылдыйкы оң бурчун таптаңыз"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Көрсөткүчтүн ылдамдыгы"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Сенсордук тактанын жаңсоолорун үйрөнүү"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Башкы бетке өтүү"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Сенсордук тактанын каалаган жерин үч манжаңыз менен жогору сүрүңүз"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Артка кайтуу"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Бул колдонмо батареяны фондо керектей берет. Батареяңыз күтүлгөндөн эртерээк отуруп калышы мүмкүн."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Өчүрүү"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Жок"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Толук кубаттоо"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Кубаттоо шайманын текшериңиз"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Шайкеш эмес кубаттоо параметри жөнүндө кеңири маалымат"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"авто, толтуруу, автотолтуруу, маалымат, киргизүүчү ачкыч, сырсөз"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Өзгөртүү"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Ачуу"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Бири да тандалган жок"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Колдонмонун коопсуз экенин текшериңиз&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; экрандагы нерселерди талдап, автоматтык түрдө толтурула турган саптарды табат."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Колдонуу: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Мындан кийин жаңы сырсөздөр, киргизүүчү ачкычтар жана башка маалымат бул жерде сакталат. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; экрандагы нерселерди колдонуп, автотолтурула турган талааларды аныктай алат."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Cырсөздөр, киргизүүчү ачкычтар жана автотолтуруу үчүн тандалган кызмат"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Бардык кызматтар өчүрүлсүнбү?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Сырсөздөр, киргизүүчү ачкычтар жана башка сакталган маалымат сиз киргенде автотолтуруу үчүн жеткиликсиз болот"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Тандаган кызматты &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&amp;gt кылып өзгөртүңүз; Жаңы сырсөздөр, киргизүүчү ачкычтар жана башка маалымат эми ушул жерде сакталат. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; экрандагы нерселерди колдонуп, автотолтурула турган талааларды аныктай алат"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s колдонулсунбу?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Өчүрүү"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Өзгөртүү"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"5 кызматты гана иштете аласыз"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Башка кызматты кошуу үчүн кеминде 1 кызматты өчүрүңүз"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s экрандагы мазмундун кайсы жерлери автоматтык түрдө толтурула тургандыгын аныктайт."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ойноткучту жашыруу"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Ойноткучту көрсөтүү"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"медиа"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Камеранын программаларынын кеңейтүүлөрүн колдонууга уруксат берүү"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Камеранын өркүндөтүлгөн функцияларын, мисалы, экранды карабай жаздыруу мүмкүнчүлүгүн берген функцияны ишке киргизүүчү демейки программаны иштетет."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth күйгүзүлөт"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Интернет"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM карталар"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index ed5b459..a074be8 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"ວິທີປົດລັອກ"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ຄືກັນກັບການລັອກໜ້າຈໍອຸປະກອນ"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ເລືອກການລັອກໃໝ່ສຳລັບພື້ນທີ່ສ່ວນບຸກຄົນບໍ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ລັອກໂດຍອັດຕະໂນມັດ"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ລັອກພື້ນທີ່ສ່ວນບຸກຄົນໂດຍອັດຕະໂນມັດ"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ລັອກພື້ນທີ່ສ່ວນບຸກຄົນໂດຍອັດຕະໂນມັດ"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"ທ່ານສາມາດລັອກພື້ນທີ່ສ່ວນບຸກຄົນຂອງທ່ານໄດ້ໂດຍອັດຕະໂນມັດຫາກທ່ານບໍ່ໄດ້ໃຊ້ອຸປະກອນຂອງທ່ານເປັນໄລຍະເວລາໜຶ່ງ"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ທຸກເທື່ອທີ່ອຸປະກອນລັອກ"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"ຫຼັງຈາກບໍ່ມີການນຳໃຊ້ເປັນເວລາ 5 ນາທີ"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"ແຕະຢູ່ແຈຂວາລຸ່ມສຸດຂອງແຜ່ນສຳຜັດເພື່ອເບິ່ງຕົວເລືອກເພີ່ມເຕີມ"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"ຄວາມໄວຂອງຕົວຊີ້"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ສຶກສາທ່າທາງຂອງແຜ່ນສຳຜັດ"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ໄປຫາໜ້າຫຼັກ"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"ໃຊ້ 3 ນິ້ວປັດຂຶ້ນຈາກຕຳແໜ່ງໃດກໍໄດ້ຢູ່ແຜ່ນສຳຜັດຂອງທ່ານ"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ກັບຄືນ"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ແອັບນີ້ຈະສາມາດໃຊ້ແບັດເຕີຣີໃນພື້ນຫຼັງ. ແບັດເຕີຣີຂອງທ່ານອາດໝົດໄວກວ່າທີ່ຄາດໄວ້."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"ລຶບ"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"ຍົກເລີກ"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"ສາກໄຟຈົນເຕັມ"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ກວດສອບອຸປະກອນເສີມສຳລັບການສາກ"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"ຮຽນ​ຮູ້​ເພີ່ມ​ເຕີມ​ກ່ຽວ​ກັບ​ການ​ສາກ​ທີ່​ບໍ່​ເຂົ້າ​ກັນ​ໄດ້"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ຕົວຈັດການແບັດເຕີຣີ"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ອັດຕະໂນມັດ, ຕື່ມຂໍ້ມູນ, ການຕື່ມຂໍ້ມູນອັດຕະໂນມັດ, ຂໍ້ມູນ, ກະແຈຜ່ານ, ລະຫັດຜ່ານ"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"ປ່ຽນ"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"ເປີດ"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"ບໍ່ໄດ້ເລືອກຫຍັງເທື່ອ"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ໃຫ້ກວດສອບວ່າທ່ານເຊື່ອແອັບນີ້&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ຈະໃຊ້ສິ່ງທີ່ຢູ່ໃນໜ້າຈໍຂອງທ່ານເພື່ອກວດເບິ່ງວ່າຈະຕື່ມຂໍ້ມູນຫຍັງອັດຕະໂນມັດ."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ລະຫັດຜ່ານໃໝ່, ກະແຈຜ່ານ ແລະ ຂໍ້ມູນອື່ນໆຈະຖືກບັນທຶກໄວ້ບ່ອນນີ້ນັບຈາກນີ້ເປັນຕົ້ນໄປ. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ອາດໃຊ້ສິ່ງທີ່ຢູ່ໜ້າຈໍຂອງທ່ານເພື່ອເບິ່ງວ່າຈະຕື່ມຂໍ້ມູນອັດຕະໂນມັດໃດໄດ້ແດ່."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"ບໍລິການທີ່ຕ້ອງການສຳລັບລະຫັດຜ່ານ, ກະແຈຜ່ານ ແລະ ການຕື່ມຂໍ້ມູນອັດຕະໂນມັດ"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;ປິດບໍລິການທັງໝົດບໍ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ລະບົບຈະບໍ່ຕື່ມຂໍ້ມູນລະຫັດຜ່ານ, ກະແຈຜ່ານ ແລະ ຂໍ້ມູນອື່ນໆທີ່ບັນທຶກໄວ້ໂດຍອັດຕະໂນມັດເມື່ອທ່ານເຂົ້າສູ່ລະບົບ"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;ປ່ຽນບໍລິການທີ່ທ່ານຕ້ອງການເປັນ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ລະຫັດຜ່ານໃໝ່, ກະແຈຜ່ານ ແລະ ຂໍ້ມູນອື່ນໆຈະຖືກບັນທຶກໄວ້ບ່ອນນີ້ນັບຈາກນີ້ເປັນຕົ້ນໄປ. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ອາດໃຊ້ສິ່ງທີ່ຢູ່ໜ້າຈໍຂອງທ່ານເພື່ອເບິ່ງວ່າຈະຕື່ມຂໍ້ມູນອັດຕະໂນມັດໃດໄດ້ແດ່"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"ໃຊ້ %1$s ບໍ?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ປິດ"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"ປ່ຽນ"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"ທ່ານສາມາດເປີດໃຊ້ບໍລິການໄດ້ພຽງ 5 ລາຍການເທົ່ານັ້ນ"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"ປິດບໍລິການຢ່າງໜ້ອຍ 1 ລາຍການເພື່ອເພີ່ມບໍລິການອື່ນ"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ໃຊ້ສິ່ງທີ່ຢູ່ໜ້າຈໍຂອງທ່ານເພື່ອລະບຸສິ່ງທີ່ສາມາດຕື່ມຂໍ້ມູນອັດຕະໂນມັດໄດ້."</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 1786066..0c5b550 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Atrakinimo metodai"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Toks pats kaip įrenginio ekrano užraktas"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Pasirinkti naują privačios erdvės užraktą?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Užrakinti automatiškai"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Užrakinti privačią erdvę automatiškai"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Užrakinti privačią erdvę automatiškai"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Galite automatiškai užrakinti privačią erdvę, jei tam tikrą laikotarpį nenaudojote įrenginio"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Kaskart, kai įrenginys užrakinamas"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Po penkių neaktyvumo minučių"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Daugiau – palietus jutiklinės dalies apačioje dešinėje"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Žymiklio greitis"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Sužinokite jutiklinės dalies gestus"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Eikite į pagrindinį puslapį"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Braukite viršun trimis pirštais bet kur jutiklinėje dalyje"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Grįžti"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ši programa galės naudoti akumuliatoriaus energiją fone. Akumuliatoriaus energija gali išsekti greičiau nei tikėjotės."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Pašalinti"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Atšaukti"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Įkrauti iki visiško įkrovimo"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Įkrovimo priedo patikra"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Sužinokite daugiau apie nesuderinamą įkrovimą"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Akumuliatoriaus tvarkytuvė"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatinis, užpildyti, automatinis pildymas, duomenys, prieigos raktas, slaptažodis"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Keisti"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Atidaryti"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nieko nepasirinkta"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Įsitikinkite, kad pasitikite šia programa&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=„Google“ automatinis pildymas&gt;%1$s&lt;/xliff:g&gt; naudodamas informaciją ekrane nustato, ką gali užpildyti automatiškai."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Naudokite &lt;xliff:g id=app_name example=„Provider“&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nuo šiol čia išsaugomi nauji slaptažodžiai, prieigos raktai ir kita informacija. &lt;xliff:g id=app_name example=„Provider“&gt;%1$s&lt;/xliff:g&gt; gali naudoti ekrane esančią informaciją, kad nustatytų, ką galima automatiškai užpildyti."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Pageidaujama slaptažodžių, prieigos raktų ir automatinio pildymo paslauga"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Išjungti visas paslaugas?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Kai prisijungsite, slaptažodžių, prieigos raktų ir kitos informacijos nebus galima užpildyti automatiškai"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Pakeiskite pageidaujamą paslaugą į &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nuo dabar nauji slaptažodžiai, prieigos raktai ir kita informacija bus išsaugomi čia. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; gali naudoti ekrane esančią informaciją, kad nustatytų, ką galima automatiškai užpildyti"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Naudoti „%1$s“?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Išjungti"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Keisti"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Gali būti įjungtos tik penkios paslaugos"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Išjunkite bent vieną paslaugą, kad galėtumėte pridėti kitą"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"„%1$s“ naudoja ekrane esančią informaciją siekdama nustatyti, ką galima automatiškai užpildyti."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index fd2f6f9..2052c59 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Atbloķēšanas iespējas"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Tāda pati bloķēšanas metode kā ierīces ekrāna bloķēšanai"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Vai bloķēt privāto telpu ar jaunu metodi?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Automātiski bloķēt"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Privātās telpas automātiska bloķēšana"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Privātās telpas automātiska bloķēšana"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Varat automātiski bloķēt savu privāto telpu, ja noteiktu laika periodu neesat izmantojis savu ierīci."</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Katru reizi, kad ierīce tiek bloķēta"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Pēc 5 minūšu neaktivitātes"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Kombinācija"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Parole"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Vai noņemt visus ierīces atbloķēšanas veidus?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Vai noņemt profila aizsardzību?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Kombinācija aizsargā tālruni, ja tas tiek nozaudēts vai nozagts"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Kombinācija aizsargā tālruni, ja tas tiek nozaudēts vai nozagts.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Veicot šo darbību, tiks izdzēsts ierīcē saglabātais pirksta nospieduma modelis. Arī sejas modelis tiks neatgriezeniski un droši izdzēsts. Lietotnēs nevarēsiet izmantot seju vai pirksta nospiedumu autentifikācijai."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN aizsargā tālruni, ja tas tiek nozaudēts vai nozagts"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Jūs zaudēsiet saglabātos datus, piemēram, PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Bezkontakta maksājumiem iestatītās kartes tiks noņemtas.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Maki un citas lietotnes, kuru izmantošanai ir jāatbloķē ierīce, iespējams, nedarbosies pareizi."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN aizsargā tālruni, ja tas tiek nozaudēts vai nozagts.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Veicot šo darbību, tiks izdzēsts arī ierīcē saglabātais pirksta nospieduma modelis. Lietotnēs nevarēsiet izmantot pirksta nospiedumu autentifikācijai."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Jūs zaudēsiet saglabātos datus, piemēram, PIN un pirksta nospieduma modeli.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Bezkontakta maksājumiem iestatītās kartes tiks noņemtas.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Maki un citas lietotnes, kuru izmantošanai ir jāatbloķē ierīce, iespējams, nedarbosies pareizi."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN aizsargā tālruni, ja tas tiek nozaudēts vai nozagts.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Arī sejas modelis tiks neatgriezeniski un droši izdzēsts. Lietotnēs nevarēsiet izmantot seju autentifikācijai."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Jūs zaudēsiet saglabātos datus, piemēram, PIN un sejas modeli.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Bezkontakta maksājumiem iestatītās kartes tiks noņemtas.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Maki un citas lietotnes, kuru izmantošanai ir jāatbloķē ierīce, iespējams, nedarbosies pareizi."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN aizsargā tālruni, ja tas tiek nozaudēts vai nozagts.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Veicot šo darbību, tiks izdzēsts ierīcē saglabātais pirksta nospieduma modelis. Arī sejas modelis tiks neatgriezeniski un droši izdzēsts. Lietotnēs nevarēsiet izmantot seju vai pirksta nospiedumu autentifikācijai."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Jūs zaudēsiet saglabātos datus, piemēram, PIN, sejas modeli un pirksta nospieduma modeli.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Bezkontakta maksājumiem iestatītās kartes tiks noņemtas.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Maki un citas lietotnes, kuru izmantošanai ir jāatbloķē ierīce, iespējams, nedarbosies pareizi."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Parole aizsargā tālruni, ja tas tiek nozaudēts vai nozagts"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Parole aizsargā tālruni, ja tas tiek nozaudēts vai nozagts.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Citas iespējas: skārienpaliktņa labais apakšējais stūris"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Rādītāja ātrums"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Apgūt skārienpaliktņa žestus"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Došanās uz sākuma ekrānu"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Ar trīs pirkstiem velciet augšup pa skārienpaliktni"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Došanās atpakaļ"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Šī lietotne varēs izmantot akumulatora enerģiju fonā. Tādējādi akumulators var izlādēties ātrāk nekā parasti."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Noņemt"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Atcelt"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Pilnībā uzlādēt"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Pārbaudiet uzlādes piederumu"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Uzzināt vairāk par uzlādi ar nesaderīgu lādētāju"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Akumulatora pārvaldnieks"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automātiskā aizpilde, automātiski aizpildīt, dati, piekļuves atslēga, parole"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Mainīt"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Atvērt"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nekas nav atlasīts"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Pārliecinieties, ka šī lietotne ir uzticama&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google automātiskā aizpilde&gt;%1$s&lt;/xliff:g&gt; izmanto ekrānā redzamo, lai noteiktu, kādu informāciju aizpildīt automātiski."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Izmantojiet lietotni &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Turpmāk jaunās paroles, piekļuves atslēgas un cita informācija tiks saglabāta šeit. Lietotne &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; var izmantot ekrānā redzamo saturu, lai noteiktu, kādu informāciju var aizpildīt automātiski."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Vēlamais pakalpojums, ko izmantot parolēm, piekļuves atslēgām un automātiskajai aizpildei"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Izslēdziet visus pakalpojumus?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Paroles, piekļuves atslēgas un cita saglabātā informācija nebūs pieejama automātiskai aizpildei, kad pierakstīsieties"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Mainiet vēlamo pakalpojumu uz &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Jaunas paroles, piekļuves atslēgas un cita informācija turpmāk tiks saglabāta šeit. Lietotne &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; var izmantot ekrānā redzamo saturu, lai noteiktu, kādu informāciju var aizpildīt automātiski"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Vai izmantot %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Izslēgt"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Mainīt"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Vienlaikus var būt ieslēgti pieci pakalpojumi"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Izslēdziet vismaz vienu pakalpojumu, lai varētu pievienot citu pakalpojumu"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s izmanto ekrānā pieejamos datus, lai noteiktu, kādu informāciju var aizpildīt automātiski."</string>
@@ -4653,7 +4669,7 @@
     <string name="forget_passpoint_dialog_message" msgid="2433875063907365760">"Iespējams, zaudēsiet piekļuvi atlikušajam laikam vai datiem. Pirms noņemšanas sazinieties ar pakalpojuma sniedzēju."</string>
     <string name="content_capture" msgid="868372905432812238">"Lietotnes saturs"</string>
     <string name="content_capture_summary" msgid="49720773699715531">"Atļaut lietotnēm nosūtīt saturu Android sistēmai"</string>
-    <string name="capture_system_heap_dump_title" msgid="9210974110606886455">"Tvert sistēmas kaudzes izrakstu"</string>
+    <string name="capture_system_heap_dump_title" msgid="9210974110606886455">"Tvert sistēmas grēdas izrakstu"</string>
     <string name="development_memtag_page_title" msgid="3546667618748029188">"Memory Tagging Extension"</string>
     <string name="development_memtag_intro" msgid="8032596625527637164">"Paplašinājums Memory Tagging Extension (MTE) palīdz meklēt atmiņas drošības problēmas lietotnē un uzlabot iebūvētā koda drošību."</string>
     <string name="development_memtag_footer" msgid="5681925148773626562">"Ieslēdzot paplašinājumu MTE, ierīces darbība var palēnināties."</string>
@@ -4665,10 +4681,10 @@
     <string name="reboot_with_mte_message" msgid="1232881567956207641">"Sistēma tiks restartēta, un varēsiet eksperimentēt ar paplašinājumu Memory Tagging Extension (MTE). MTE var negatīvi ietekmēt sistēmas veiktspēju un stabilitāti. Nākamajā atkārtotas palaišanas reizē šis iestatījums tiks atiestatīts."</string>
     <string name="reboot_with_mte_summary" msgid="3896537791216432882">"Restartēt uz vienu sesiju ar iespējotu MTE"</string>
     <string name="reboot_with_mte_already_enabled" msgid="4439168867613407167">"Paplašinājums MTE jau ir iespējots"</string>
-    <string name="capturing_system_heap_dump_message" msgid="8410503247477360622">"Notiek sistēmas kaudzes izraksta tveršana"</string>
-    <string name="error_capturing_system_heap_dump_message" msgid="2352983250048200052">"Neizdevās tvert sistēmas kaudzes izrakstu"</string>
+    <string name="capturing_system_heap_dump_message" msgid="8410503247477360622">"Notiek sistēmas grēdas izraksta tveršana"</string>
+    <string name="error_capturing_system_heap_dump_message" msgid="2352983250048200052">"Neizdevās tvert sistēmas grēdas izrakstu"</string>
     <string name="automatic_system_heap_dump_title" msgid="4093306504711109479">"Automātiski tvert sistēmas kaudzes izrakstus"</string>
-    <string name="automatic_system_heap_dump_summary" msgid="4060846186592886986">"Automātiski tvert Android sistēmas kaudzes izrakstu, ja sistēma patērē pārāk daudz atmiņas"</string>
+    <string name="automatic_system_heap_dump_summary" msgid="4060846186592886986">"Automātiski tvert Android sistēmas grēdas izrakstu, ja sistēma patērē pārāk daudz atmiņas"</string>
     <string name="wifi_disconnect_button_text" msgid="5698154296678571998">"Atvienot"</string>
     <string name="wfc_disclaimer_emergency_limitation_title_text" msgid="8276287227589397162">"Ārkārtas zvani"</string>
     <string name="wfc_disclaimer_emergency_limitation_desc_text" msgid="5503902001191552196">"Jūsu mobilo sakaru operators neatbalsta ārkārtas zvanus kā Wi‑Fi zvanus.\nIerīcē tiek automātiski pārslēgts mobilais tīkls, lai veiktu ārkārtas zvanu.\nĀrkārtas zvanus iespējams veikt tikai apgabalos ar mobilā tīkla pārklājumu."</string>
@@ -4752,10 +4768,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Paslēpt atskaņotāju"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Rādīt atskaņotāju"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"multivide"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Atļaut kameras programmatūras paplašinājumus"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Tiek iespējota modernu kameras funkciju (piemēram, video uzņemšana neskatoties) noklusējuma programmatūras ieviešana."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Tiks ieslēgts Bluetooth savienojums."</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internets"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM kartes"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 5fe0130..8a8ac51 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Начини на отклучување"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Исто како заклучувањето екран на уредот"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Да се избере ново заклучув. за „Приватен простор“?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Заклучување автоматски"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Заклучување на „Приватен простор“ автоматски"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Заклучување на „Приватен простор“ автоматски"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Може да го заклучите вашиот „Приватен простор“ автоматски ако не сте го користеле уредот одреден временски период"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"При секое заклучување на уредот"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"По неактивност од 5 минути"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Шема"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Лозинка"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Да се отстранат сите начини на отклучување на уредот?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Да се отстрани заштитата на профилот?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Шемата го заштитува телефонот ако го изгубите или ви го украдат"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Шемата го заштитува телефонот ако го изгубите или ви го украдат.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Ова ќе го избрише моделот на отпечаток зачуван на уредот. И моделот на лик трајно и безбедно ќе се избрише. Нема да може да го користите вашиот лик или отпечатокот за автентикација во апликации."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN-кодот го заштитува телефонот ако го изгубите или ви го украдат"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Ќе ги изгубите зачуваните податоци како вашиот PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картичките поставени за бесконтактно плаќање ќе се отстранат.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Паричниците и другите апликации за коишто е потребно отклучување на уредот можеби нема да функционираат правилно."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN-кодот го заштитува телефонот ако го изгубите или ви го украдат.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Ова ќе го избрише и моделот на отпечаток зачуван на уредот. Нема да може да го користите вашиот отпечаток за автентикација во апликации."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Ќе ги изгубите зачуваните податоци како вашиот PIN и модел на отпечаток.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картичките поставени за бесконтактно плаќање ќе се отстранат.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Паричниците и другите апликации за коишто е потребно отклучување на уредот можеби нема да функционираат правилно."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN-кодот го заштитува телефонот ако го изгубите или ви го украдат.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>И моделот на лик трајно и безбедно ќе се избрише. Нема да може да го користите вашиот лик за автентикација во апликации."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Ќе ги изгубите зачуваните податоци како вашиот PIN и модел на лик.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картичките поставени за бесконтактно плаќање ќе се отстранат.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Паричниците и другите апликации за коишто е потребно отклучување на уредот можеби нема да функционираат правилно."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN-кодот го заштитува телефонот ако го изгубите или ви го украдат.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Ова ќе го избрише моделот на отпечаток зачуван на уредот. И моделот на лик трајно и безбедно ќе се избрише. Нема да може да го користите вашиот лик или отпечатокот за автентикација во апликации."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Ќе ги изгубите зачуваните податоци како вашиот PIN, модел на лик и модел на отпечаток.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картичките поставени за бесконтактно плаќање ќе се отстранат.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Паричниците и другите апликации за коишто е потребно отклучување на уредот можеби нема да функционираат правилно."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Лозинката го заштитува телефонот ако го изгубите или ви го украдат"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Лозинката го заштитува телефонот ако го изгубите или ви го украдат.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Допрете го долниот десен агол од подлогата за допир за опции"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Брзина на покажувач"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Научете движења за подлога за допир"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Оди на почетен екран"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Повлечете нагоре со 3 прсти каде било на подлогата за допир"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Врати се назад"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Апликацијава ќе може да ја користи батеријата во заднина. Батеријата може да се потроши порано од очекуваното."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Да"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Откажи"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Наполни до полна"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Проверете го додатокот за полнење"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Дознајте повеќе за некомпатибилното полнење"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Управник со батерија"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"автоматски, пополнување, автоматско пополнување, податоци, криптографски клуч, лозинка"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Промени"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Отвори"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Не е избрано ништо"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Проверете дали е ова апликација на која ѝ верувате&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=„Автоматско пополнување на Google“&gt;%1$s&lt;/xliff:g&gt; го користи она што е на екранот за да утврди што може автоматски да се пополни."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Новите лозинки, криптографски клучеви и други податоци отсега ќе се зачувуваат овде. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; може да го користи она што е на екранот за да утврди што може автоматски да се пополни."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Претпочитана услуга за лозинки, криптографски клучеви и автоматско пополнување"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Да се исклучат сите услуги?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Лозинките, криптографските клучеви и другите зачувани податоци нема да бидат достапни за автоматско пополнување при најавување"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Да се промени претпочитаната услуга на &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Отсега, новите лозинки, криптографски клучеви и другите податоци ќе се зачувуваат тука. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; може да го користи она што е на екранот за да утврди што може да се пополни автоматски"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Да се користи %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Исклучи"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Промени"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Може да имате само 5 вклучени услуги"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Исклучете барем 1 услуга за да додадете друга"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s го користи она што е на вашиот екран за да одреди што може автоматски да се пополни."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Скриј го плеерот"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Прикажи го плеерот"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"аудиовизуелни содржини"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Дозволи екстензии на софтверот за камерата"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Ја овозможува стандардната имплементација на софтвер за напредни функции на камерата, како што е „Видеографија за слепи“."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth ќе се вклучи"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Интернет"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-картички"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 3c40456..4eccb83 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"അൺലോക്ക് ചെയ്യാനുള്ള മാർഗ്ഗങ്ങൾ"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ഉപകരണത്തിന്റെ അതേ സ്‌ക്രീൻ ലോക്ക്"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"സ്വകാര്യ സ്‌പേസിന് പുതിയ ലോക്ക് തിരഞ്ഞെടുക്കണോ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"സ്വയമേവ ലോക്ക് ചെയ്യുക"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"സ്വകാര്യ സ്പേസ് സ്വയമേവ ലോക്ക് ചെയ്യുക"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"സ്വകാര്യ സ്പേസ് സ്വയമേവ ലോക്ക് ചെയ്യുക"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"ഉപകരണം ഒരു നിശ്ചിത കാലയളവിൽ ഉപയോഗിച്ചിട്ടില്ലെങ്കിൽ, നിങ്ങളുടെ സ്വകാര്യ സ്പേസ് സ്വയമേവ ലോക്ക് ചെയ്യാം"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ഉപകരണം ലോക്ക് ചെയ്യുമ്പോഴെല്ലാം"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 മിനിറ്റ് നിഷ്‌ക്രിയമായതിന് ശേഷം"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"കൂടുതൽ ഓപ്‌ഷനുകൾക്ക് ടച്ച്പാഡിന് താഴെ വലതുമൂല ടാപ്പ് ചെയ്യൂ"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"പോയിന്റർ വേഗത"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ടച്ച്പാഡ് ജെസ്ച്ചറുകൾ മനസ്സിലാക്കുക"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ഹോമിലേക്ക് പോകുക"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"ടച്ച്‌പാഡിൽ മൂന്ന് വിരൽ കൊണ്ട് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"മടങ്ങുക"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ഈ ആപ്പിന് പശ്ചാത്തലത്തിൽ ബാറ്ററി ഉപയോഗിക്കാനാവും. പ്രതീക്ഷിച്ചതിനെക്കാൾ വേഗത്തിൽ ബാറ്ററി ചാർജ് തീർന്നേക്കാം."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"നീക്കം ചെയ്യുക"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"റദ്ദാക്കുക"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"പൂർണ്ണമായി ചാർജ് ചെയ്യുക"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ചാർജിംഗ് ആക്സസറി പരിശോധിക്കുക"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"അനുയോജ്യമല്ലാത്ത ചാർജിംഗിനെ കുറിച്ച് കൂടുതലറിയുക"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ബാറ്ററി മാനേജർ"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"സ്വയമേവ, പൂരിപ്പിക്കുക, സ്വയമേവ പൂരിപ്പിക്കൽ, ഡാറ്റ, പാസ്‌കീ, പാസ്‌വേഡ്"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"മാറ്റുക"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"തുറക്കുക"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ഈ ആപ്പിനെ നിങ്ങൾ വിശ്വസിക്കുന്നുണ്ടെന്ന് ഉറപ്പുവരുത്തുക&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; സ്വയമേവ പൂരിപ്പിക്കേണ്ടത് എന്താണെന്ന് നിർണ്ണയിക്കുന്നതിന് &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; നിങ്ങളുടെ സ്‌ക്രീനിൽ ഉള്ളത് ഉപയോഗിക്കുന്നു."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; പുതിയ പാസ്‌വേഡുകളും പാസ്‌കീകളും മറ്റ് വിവരങ്ങളും ഇനിമുതൽ ഇവിടെ സംരക്ഷിക്കും. എന്താണ് സ്വയമേവ പൂരിപ്പിക്കേണ്ടതെന്ന് നിർണ്ണയിക്കാൻ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; നിങ്ങളുടെ സ്ക്രീനിലുള്ളത് ഉപയോഗിക്കുന്നു."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"പാസ്‌വേഡുകൾ, പാസ്‌കീകൾ, സ്വയമേവ പൂരിപ്പിക്കൽ എന്നിവയ്‌ക്കുള്ള, മുൻഗണന നൽകുന്ന സേവനം"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;എല്ലാ സേവനങ്ങളും ഓഫാക്കണോ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുമ്പോൾ പാസ്‌വേഡുകളും പാസ്‌കീകളും സംരക്ഷിച്ച മറ്റ് വിവരങ്ങളും സ്വയമേവ പൂരിപ്പിക്കാൻ ലഭ്യമാകില്ല"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;നിങ്ങൾ മുൻഗണന നൽകുന്ന സേവനം &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; എന്നതിലേക്ക് മാറ്റുക, പുതിയ പാസ്‌വേഡുകളും പാസ്‌കീകളും മറ്റ് വിവരങ്ങളും ഇനി മുതൽ ഇവിടെ സംരക്ഷിക്കും. എന്താണ് സ്വയമേവ പൂരിപ്പിക്കേണ്ടതെന്ന് നിർണ്ണയിക്കാൻ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; നിങ്ങളുടെ സ്ക്രീനിലുള്ളത് ഉപയോഗിക്കുന്നു"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s ഉപയോഗിക്കണോ?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ഓഫാക്കുക"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"മാറ്റുക"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"നിങ്ങൾക്ക് 5 സേവനങ്ങൾ മാത്രമേ ഓണാക്കാനാകൂ"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"മറ്റൊന്ന് ചേർക്കാൻ കുറഞ്ഞത് ഒരു സേവനമെങ്കിലും ഓഫാക്കുക"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"എന്താണ് സ്വയമേവ പൂരിപ്പിക്കേണ്ടത് എന്ന് നിർണ്ണയിക്കാൻ നിങ്ങളുടെ സ്ക്രീനിലുള്ളത് %1$s ഉപയോഗിക്കുന്നു."</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index c1d79a4..97d3d8d 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Түгжээг тайлах аргууд"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Төхөөрөмжийн дэлгэцийн түгжээтэй ижил"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Хаалттай орон зайд шинэ түгжээ сонгох уу?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Автоматаар түгжих"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Хувийн орон зайг автоматаар түгжих"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Хаалттай орон зайг автоматаар түгжих"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Хэрэв та төхөөрөмжөө хэсэг хугацааны туршид ашиглаагүй бол хувийн орон зайгаа автоматаар түгжих боломжтой"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Төхөөрөмж түгжигдэх бүрд"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 минут идэвхгүй байсны дараа"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Хээ"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"ПИН"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Нууц үг"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Төхөөрөмжийн түгжээг тайлах бүх төрлийг хасах уу?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Профайлын хамгаалалтыг устгах уу?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Та утсаа гээсэн эсвэл хулгайд алдсан тохиолдолд хээ үүнийг хамгаалдаг"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Та утсаа гээсэн эсвэл хулгайд алдсан тохиолдолд хээ үүнийг хамгаалдаг.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Энэ нь таны төхөөрөмж дээр хадгалсан хурууны хээний загварыг устгана. Таны нүүрний загварыг мөн бүрмөсөн, аюулгүйгээр устгана. Та царай эсвэл хурууны хээгээ аппуудын баталгаажуулалтад ашиглах боломжгүй болно."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Та утсаа гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН үүнийг хамгаалдаг"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Та ПИН зэрэг хадгалсан өгөгдлөө алдана.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Зайнаас уншуулж төлөхөд зориулж тохируулсан картуудыг хасна.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Төхөөрөмжийн түгжээг тайлахыг шаарддаг Wallet болон бусад апп зохих ёсоор ажиллахгүй байж магадгүй."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Та утсаа гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН үүнийг хамгаалдаг.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Энэ нь мөн таны төхөөрөмж дээр хадгалсан хурууны хээний загварыг устгана. Та хурууны хээгээ аппуудын баталгаажуулалтад ашиглах боломжгүй болно."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Та ПИН болон хурууны хээний загвар зэрэг хадгалсан өгөгдлөө алдана.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Зайнаас уншуулж төлөхөд зориулж тохируулсан картуудыг хасна.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Төхөөрөмжийн түгжээг тайлахыг шаарддаг Wallet болон бусад апп зохих ёсоор ажиллахгүй байж магадгүй."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Та утсаа гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН үүнийг хамгаалдаг.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Таны нүүрний загварыг мөн бүрмөсөн, аюулгүйгээр устгана. Та царайгаа аппуудын баталгаажуулалтад ашиглах боломжгүй болно."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Та ПИН болон нүүрний загвар зэрэг хадгалсан өгөгдлөө алдана.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Зайнаас уншуулж төлөхөд зориулж тохируулсан картуудыг хасна.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Төхөөрөмжийн түгжээг тайлахыг шаарддаг Wallet болон бусад апп зохих ёсоор ажиллахгүй байж магадгүй."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Та утсаа гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН үүнийг хамгаалдаг.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Энэ нь таны төхөөрөмж дээр хадгалсан хурууны хээний загварыг устгана. Таны нүүрний загварыг мөн бүрмөсөн, аюулгүйгээр устгана. Та царай эсвэл хурууны хээгээ аппуудын баталгаажуулалтад ашиглах боломжгүй болно."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Та ПИН, нүүр болон хурууны хээний загвар зэрэг хадгалсан өгөгдлөө алдана.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Зайнаас уншуулж төлөхөд зориулж тохируулсан картуудыг хасна.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Төхөөрөмжийн түгжээг тайлахыг шаарддаг Wallet болон бусад апп зохих ёсоор ажиллахгүй байж магадгүй."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Та утсаа гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг үүнийг хамгаалдаг"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Та утсаа гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг үүнийг хамгаалдаг.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Бусад сонголтыг авах бол мэдрэгч самбарын баруун доод буланг товшино уу"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Заагчийн хурд"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Мэдрэгч самбарын зангааг мэдэж авах"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Үндсэн нүүр лүү очих"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Мэдрэгч самбарын аль ч хэсэгт 3 хуруугаараа дээш шударна уу"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Буцах"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Энэ апп батарейг цаана ашиглах боломжтой болно. Таны батарей тооцоолж байснаас хурдан дуусаж болзошгүй."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Устгах"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Цуцлах"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Бүрэн цэнэглэх"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Цэнэглэх нэмэлт хэрэгслийг шалгах"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Тохиромжгүй адаптераар цэнэглэх талаар нэмэлт мэдээлэл авах"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Батерейны менежер"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"автомат, бөглөх, автоматаар бөглөх хэсэг, өгөгдөл, нэвтрэх түлхүүр, нууц үг"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Өөрчлөх"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Нээх"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Юу ч сонгоогүй"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Энэ апп-д итгэдэг эсэхээ шалгана уу&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google автоматаар бөглөх&gt;%1$s&lt;/xliff:g&gt; таны дэлгэцэд автоматаар бөглөх зүйлийг илрүүлэхийн тулд ашигладаг."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt; &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt;-г ашиглах &lt;br/&gt; &lt;br/&gt; Шинэ нууц үг, нэвтрэх түлхүүр болон бусад мэдээллийг одооноос эхлэн энд хадгална. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; юуг автоматаар бөглөж болохыг тодорхойлохын тулд таны дэлгэцэд байгаа зүйлсийг ашиглаж магадгүй."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Нууц үг, нэвтрэх түлхүүр болон автоматаар бөглөхөд илүүд үзсэн үйлчилгээ"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Бүх үйлчилгээг унтраах уу?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Нууц үг, нэвтрэх түлхүүр болон бусад хадгалсан мэдээлэл таныг нэвтрэх үед автоматаар бөглөх хэсэгт боломжгүй байх болно"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Илүүд үзсэн үйлчилгээгээ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; болгож өөрчилнө үү&lt;br/&gt; &lt;br/&gt; Шинэ нууц үг, нэвтрэх түлхүүр болон бусад мэдээллийг одооноос энд хадгална. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; юуг автоматаар бөглөж болохыг тодорхойлохын тулд таны дэлгэц дээр байгаа зүйлсийг ашиглаж магадгүй"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s-г ашиглах уу?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Унтраах"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Өөрчлөх"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Та зөвхөн 5 үйлчилгээг асаасан байх боломжтой"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Өөр үйлчилгээ нэмэхийн тулд дор хаяж 1 үйлчилгээг унтраана уу"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s таны дэлгэцэд байгаа зүйлийг ашиглан юуг автоматаар бөглөж болохыг тодорхойлдог."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Тоглуулагчийг нуух"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Тоглуулагчийг харуулах"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"медиа"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Камерын программ хангамжийн өргөтгөлүүдийг зөвшөөрөх"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Нүднээс хамаарахгүй видео бичлэг зэрэг камерын дэвшилтэт онцлогуудын программ хангамжийн өгөгдмөл хэрэгжүүлэлтийг идэвхжүүлнэ."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth-г асаана"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Интернэт"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index accd254..dc975ae 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -428,7 +428,7 @@
     <string name="security_settings_remoteauth_enroll_enrolling_title" msgid="313016997943607675">"तुमचे वॉच निवडा"</string>
     <string name="security_settings_remoteauth_enroll_enrolling_list_heading" msgid="8227585438932911013">"उपलब्ध असलेली वॉच"</string>
     <string name="security_settings_remoteauth_enroll_enrolling_disagree" msgid="1670201454188049863">"रद्द करा"</string>
-    <string name="security_settings_remoteauth_enroll_enrolling_agree" msgid="7048336252635730908">"कंफर्म करा"</string>
+    <string name="security_settings_remoteauth_enroll_enrolling_agree" msgid="7048336252635730908">"कन्फर्म करा"</string>
     <string name="security_settings_remoteauth_enroll_finish_title" msgid="3807372930755413112">"तुम्ही पूर्णपणे तयार आहात!"</string>
     <string name="security_settings_remoteauth_enroll_finish_description" msgid="4876209907275244653">"तुम्ही आता तुमच्या लॉक स्क्रीनवर वरती स्वाइप करून किंवा सूचनेवर टॅप करून हा फोन अनलॉक करण्यासाठी तुमचे वॉच वापरू शकता"</string>
     <string name="security_settings_remoteauth_enroll_finish_btn_next" msgid="8072138423143889592">"पूर्ण झाले"</string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"अनलॉक करण्याच्या पद्धती"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"डिव्हाइसच्या स्क्रीन लॉकसारखेच"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"खाजगी स्पेससाठी नवीन लॉक निवडायचे आहे का?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"आपोआप लॉक करा"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"खाजगी स्पेस आपोआप लॉक करा"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"खाजगी स्पेस आपोआप लॉक करा"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"तुम्ही काही कालावधीसाठी तुमचे डिव्हाइस वापरले नसल्यास, तुमची खाजगी स्पेस आपोआप लॉक करू शकता"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"प्रत्येक वेळी डिव्हाइस लॉक होते"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"५ मिनिटांच्या इनॅक्टिव्हिटीनंतर"</string>
@@ -649,12 +648,12 @@
     <string name="lock_settings_picker_profile_message" msgid="9142379549980873478">"तुम्ही हे लॉक विसरल्यास, तुमच्या IT ॲडमिनला ते रीसेट करण्यास सांगा"</string>
     <string name="setup_lock_settings_options_button_label" msgid="6098297461618298505">"स्क्रीन लॉक पर्याय"</string>
     <string name="setup_lock_settings_options_dialog_title" msgid="7985107300517468569">"स्क्रीन लॉक पर्याय"</string>
-    <string name="lock_screen_auto_pin_confirm_title" msgid="3012128112186088375">"ऑटो-कंफर्म अनलॉक"</string>
-    <string name="lock_screen_auto_pin_confirm_summary" msgid="9050818870806580819">"तुम्ही सहा किंवा त्याहून अधिक अंकी योग्य पिन इनपुट केल्यास आपोआप अनलॉक करा. हे कंफर्म करण्यासाठी एंटर वर टॅप करण्यापेक्षा थोडेसे कमी सुरक्षित आहे."</string>
-    <string name="auto_pin_confirm_user_message" msgid="6194556173488939314">"योग्य पिन ऑटो-कंफर्म करा"</string>
-    <string name="auto_pin_confirm_opt_in_security_message" msgid="580773976736184893">"ऑटो-कंफर्म वापरण्यापेक्षा एंटर वर टॅप करून तुमचा पिन कंफर्म करणे अधिक सुरक्षित आहे"</string>
-    <string name="auto_confirm_on_pin_verify_description" msgid="2052240431173223502">"ऑटो-कंफर्म सुरू करण्यासाठी डिव्हाइस पिन एंटर करा"</string>
-    <string name="auto_confirm_off_pin_verify_description" msgid="4256219155659760047">"ऑटो-कंफर्म बंद करण्यासाठी डिव्हाइस पिन एंटर करा"</string>
+    <string name="lock_screen_auto_pin_confirm_title" msgid="3012128112186088375">"ऑटो-कन्फर्म अनलॉक"</string>
+    <string name="lock_screen_auto_pin_confirm_summary" msgid="9050818870806580819">"तुम्ही सहा किंवा त्याहून अधिक अंकी योग्य पिन इनपुट केल्यास आपोआप अनलॉक करा. हे कन्फर्म करण्यासाठी एंटर वर टॅप करण्यापेक्षा थोडेसे कमी सुरक्षित आहे."</string>
+    <string name="auto_pin_confirm_user_message" msgid="6194556173488939314">"योग्य पिन ऑटो-कन्फर्म करा"</string>
+    <string name="auto_pin_confirm_opt_in_security_message" msgid="580773976736184893">"ऑटो-कन्फर्म वापरण्यापेक्षा एंटर वर टॅप करून तुमचा पिन कन्फर्म करणे अधिक सुरक्षित आहे"</string>
+    <string name="auto_confirm_on_pin_verify_description" msgid="2052240431173223502">"ऑटो-कन्फर्म सुरू करण्यासाठी डिव्हाइस पिन एंटर करा"</string>
+    <string name="auto_confirm_off_pin_verify_description" msgid="4256219155659760047">"ऑटो-कन्फर्म बंद करण्यासाठी डिव्हाइस पिन एंटर करा"</string>
     <string name="unlock_set_unlock_launch_picker_title" msgid="4981063601772605609">"स्क्रीन लॉक"</string>
     <string name="unlock_set_unlock_launch_picker_title_profile" msgid="7631371082326055429">"कार्य प्रोफाइल लॉक"</string>
     <string name="unlock_set_unlock_off_title" msgid="2831957685685921667">"काहीही नाही"</string>
@@ -773,7 +772,7 @@
     <string name="lockpassword_password_requires_nonnumerical" msgid="389687423482993365">"{count,plural, =1{किमान एक अंक नसलेला वर्ण असणे आवश्यक आहे}other{किमान # अंक नसलेले वर्ण असणे आवश्यक आहे}}"</string>
     <string name="lockpassword_password_recently_used" msgid="5341218079730167191">"डिव्हाइस प्रशासक अलीकडील पासवर्ड वापरण्याची अनुमती देत नाही"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="5843639256988031272">"अंकांच्या चढत्या, उतरत्या किंवा पुनरावृत्त क्रमाला अनुमती नाही"</string>
-    <string name="lockpassword_confirm_label" msgid="560897521093566777">"कंफर्म करा"</string>
+    <string name="lockpassword_confirm_label" msgid="560897521093566777">"कन्फर्म करा"</string>
     <string name="lockpassword_clear_label" msgid="311359833434539894">"साफ करा"</string>
     <string name="lockpassword_credential_changed" msgid="5934778179732392028">"स्क्रीन लॉक आधीच बदलले गेले आहे. नवीन स्क्रीन लॉकने पुन्हा प्रयत्न करा."</string>
     <string name="lockpattern_tutorial_cancel_label" msgid="775215267818384016">"रद्द करा"</string>
@@ -1590,7 +1589,7 @@
     <string name="lockpassword_confirm_your_password_header" msgid="6132312814563023990">"तुमचा पासवर्ड पुन्‍हा एंटर करा"</string>
     <string name="lockpassword_reenter_your_profile_password_header" msgid="3812040127714827685">"तुमचा कार्य पासवर्ड पुन्हा एंटर करा"</string>
     <string name="lockpassword_confirm_your_work_password_header" msgid="4647071231702288305">"तुमच्या ऑफिसचा पासवर्ड एंटर करा"</string>
-    <string name="lockpassword_confirm_your_pattern_header" msgid="4037701363240138651">"तुमचा पॅटर्न कंफर्म करा"</string>
+    <string name="lockpassword_confirm_your_pattern_header" msgid="4037701363240138651">"तुमचा पॅटर्न कन्फर्म करा"</string>
     <string name="lockpassword_confirm_your_work_pattern_header" msgid="2668883108969165844">"तुमच्या ऑफिसचा पॅटर्न एंटर करा"</string>
     <string name="lockpassword_confirm_your_pin_header" msgid="2241722970567131308">"तुमचा पिन पुन्हा एंटर करा"</string>
     <string name="lockpassword_reenter_your_profile_pin_header" msgid="2890233614560435538">"तुमचा कार्य पिन पुन्हा एंटर करा"</string>
@@ -1653,7 +1652,7 @@
     <string name="lockpattern_pattern_entered_header" msgid="7709618312713127249">"पॅटर्न रेकॉर्ड झाला"</string>
     <string name="lockpattern_need_to_confirm" msgid="6489499109451714360">"खात्री करण्यासाठी पॅटर्न पुन्हा एकदा काढा"</string>
     <string name="lockpattern_pattern_confirmed_header" msgid="2969990617475456153">"तुमचा नवीन अनलॉक पॅटर्न"</string>
-    <string name="lockpattern_confirm_button_text" msgid="6122815520373044089">"कंफर्म करा"</string>
+    <string name="lockpattern_confirm_button_text" msgid="6122815520373044089">"कन्फर्म करा"</string>
     <string name="lockpattern_restart_button_text" msgid="255339375151895998">"पुन्हा रेखाटा"</string>
     <string name="lockpattern_retry_button_text" msgid="4229668933251849760">"साफ करा"</string>
     <string name="lockpattern_continue_button_text" msgid="5253269556259503537">"सुरू ठेवा"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"अधिक पर्यायांसाठी टचपॅडच्या तळाशी उजव्या कोपऱ्यावर टॅप करा"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"पॉइंटर वेग"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"टचपॅड जेश्चर जाणून घ्या"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"होमवर जा"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"तुमच्या टचपॅडवर कुठेही तीन बोटांनी वरती स्‍वाइप करा"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"मागे जा"</string>
@@ -2359,7 +2362,7 @@
     <string name="print_restart" msgid="4424096106141083945">"रीस्टार्ट"</string>
     <string name="print_cancel" msgid="7611266511967568501">"रद्द करा"</string>
     <string name="print_job_summary" msgid="277210060872032969">"<xliff:g id="PRINTER">%1$s</xliff:g>\n<xliff:g id="TIME">%2$s</xliff:g>"</string>
-    <string name="print_configuring_state_title_template" msgid="2887013172492183045">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> कॉंफिगर करत आहे"</string>
+    <string name="print_configuring_state_title_template" msgid="2887013172492183045">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> कॉन्फिगर करत आहे"</string>
     <string name="print_printing_state_title_template" msgid="7367513245156603431">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> प्रिंट करत आहे"</string>
     <string name="print_cancelling_state_title_template" msgid="9094795458159980190">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> रद्द करत आहे"</string>
     <string name="print_failed_state_title_template" msgid="4751695809935404505">"प्रिंटर एरर <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"या ॲपला बॅकग्राउंडमध्ये बॅटरी वापरता येईल. तुमची बॅटरी अपेक्षेपेक्षा लवकर संपू शकते."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"काढा"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"रद्द करा"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"पूर्ण चार्ज करा"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"चार्जिंगसंबंधित ॲक्सेसरी तपासा"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"कंपॅटिबल नसलेल्या चार्जिंगबद्दल अधिक जाणून घ्या"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"बॅटरी व्यवस्थापक"</string>
@@ -3316,7 +3320,7 @@
     <string name="work_alarm_ringtone_title" msgid="3369293796769537392">"डीफॉल्ट कार्य अलार्म आवाज"</string>
     <string name="work_sound_same_as_personal" msgid="1836913235401642334">"वैयक्तिक प्रोफाइल सारखे"</string>
     <string name="work_sync_dialog_title" msgid="7810248132303515469">"वैयक्तिक प्रोफाइलचा आवाज वापरायचा आहे का?"</string>
-    <string name="work_sync_dialog_yes" msgid="5785488304957707534">"कंफर्म करा"</string>
+    <string name="work_sync_dialog_yes" msgid="5785488304957707534">"कन्फर्म करा"</string>
     <string name="work_sync_dialog_message" msgid="5066178064994040223">"तुमची कार्य प्रोफाइल ही तुमच्या वैयक्तिक प्रोफाइलसारखाच आवाज वापरेल"</string>
     <string name="configure_notification_settings" msgid="1492820231694314376">"सूचना"</string>
     <string name="notification_dashboard_summary" msgid="7530169251902320652">"सूचना इतिहास, संभाषणे"</string>
@@ -3689,7 +3693,7 @@
     <string name="screen_pinning_unlock_pin" msgid="8716638956097417023">"अनपिन करण्‍यापूर्वी पिन साठी विचारा"</string>
     <string name="screen_pinning_unlock_password" msgid="4957969621904790573">"अनपिन करण्‍यापूर्वी पासवर्ड विचारा"</string>
     <string name="screen_pinning_unlock_none" msgid="2474959642431856316">"अनपिन करताना डिव्हाइस लॉक करा"</string>
-    <string name="confirm_sim_deletion_title" msgid="7262127071183428893">"तुम्हाला तुमचे eSIM मिटवायचे आहे हे कंफर्म करा"</string>
+    <string name="confirm_sim_deletion_title" msgid="7262127071183428893">"तुम्हाला तुमचे eSIM मिटवायचे आहे हे कन्फर्म करा"</string>
     <string name="confirm_sim_deletion_description" msgid="4439657901673639063">"eSIM मिटवण्याआधी हे तुम्हीच आहात याची पडताळणी करा"</string>
     <string name="memtag_title" msgid="5096176296797727201">"प्रगत मेमरी संरक्षण बीटा"</string>
     <string name="memtag_toggle" msgid="8695028758462939212">"प्रगत मेमरी संरक्षण"</string>
@@ -4006,7 +4010,7 @@
     <string name="set_data_limit" msgid="9010326815874642680">"डेटा मर्यादा सेट करा"</string>
     <string name="data_limit" msgid="8731731657513652363">"डेटा मर्यादा"</string>
     <string name="data_usage_template" msgid="3822452362629968010">"<xliff:g id="ID_2">%2$s</xliff:g> दरम्यान <xliff:g id="ID_1">%1$s</xliff:g> वापरला"</string>
-    <string name="configure" msgid="1499586749829665889">"कॉंफिगर करा"</string>
+    <string name="configure" msgid="1499586749829665889">"कॉन्फिगर करा"</string>
     <string name="data_usage_other_apps" msgid="5649047093607329537">"वापरामध्ये समाविष्‍ट केलेली इतर अ‍ॅप्स"</string>
     <string name="data_saver_unrestricted_summary" msgid="7343571401172437542">"{count,plural, =1{डेटा सेव्हर सुरू असते, तेव्हा एका अ‍ॅपला प्रतिबंधित न केलेला डेटा वापरण्याची अनुमती आहे}other{डेटा सेव्हर सुरू असते, तेव्हा # अ‍ॅप्सना प्रतिबंधित न केलेला डेटा वापरण्याची अनुमती आहे}}"</string>
     <string name="data_usage_title" msgid="4039024073687469094">"प्राथमिक डेटा"</string>
@@ -4121,7 +4125,7 @@
     <string name="dark_theme_slice_subtitle" msgid="5555724345330434268">"बॅटरी लाइफ वाढवण्यात मदत करते"</string>
     <string name="quick_settings_developer_tiles" msgid="7336007844525766623">"क्विक सेटिंग्ज डेव्हलपर टाइल"</string>
     <string name="adb_authorization_timeout_title" msgid="6996844506783749754">"adb ऑथोरायझेशन टाइमआउट बंद करा"</string>
-    <string name="adb_authorization_timeout_summary" msgid="409931540424019778">"डीफॉल्ट (सात दिवस) किंवा वापरकर्ता-कॉंफिगर केलेल्या (किमान एक दिवस) वेळेमध्ये पुन्हा कनेक्ट न केलेल्या सिस्टीमसाठी adb ऑथोरायझेशन ऑटोमॅटिक मागे घेणे बंद करा."</string>
+    <string name="adb_authorization_timeout_summary" msgid="409931540424019778">"डीफॉल्ट (सात दिवस) किंवा वापरकर्ता-कॉन्फिगर केलेल्या (किमान एक दिवस) वेळेमध्ये पुन्हा कनेक्ट न केलेल्या सिस्टीमसाठी adb ऑथोरायझेशन ऑटोमॅटिक मागे घेणे बंद करा."</string>
     <string name="sensors_off_quick_settings_title" msgid="8472151847125917167">"सेन्सर बंद आहेत"</string>
     <string name="managed_profile_settings_title" msgid="3400923723423564217">"कार्य प्रोफाइल सेटिंग्ज"</string>
     <string name="managed_profile_contact_search_title" msgid="6562061740814513737">"वैयक्तिक ॲप्समध्ये कामासंबंधित डिरेक्टरीतील संपर्क शोधा"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ऑटो, भरा, ऑटोफिल, डेटा, पासकी, पासवर्ड"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"बदला"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"उघडा"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"कोणताही निवडलेला नाही"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;तुमचा या ॲपवर विश्वास असल्याची खात्री करा&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ऑटोफिल काय होऊ शकते हे ठरवण्यासाठी तुमच्या स्क्रीनवर काय आहे याचा वापर करते."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;वापरायचे आहे का?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; नवीन पासवर्ड, पासकी आणि इतर माहिती आता येथे सेव्ह केली जाईल. काय ऑटोफिल केले जाऊ शकते हे निर्धारित करण्यासाठी &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; हे तुमच्या स्क्रीनवर असलेल्या गोष्टी वापरू शकते."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"पासवर्ड, पासकी आणि ऑटोफिलसाठी प्राधान्य दिलेली सेवा"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;सर्व सेवा बंद करायच्या आहेत का?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; तुम्ही साइन इन करा, तेव्हा पासवर्ड, पासकी आणि सेव्ह केलेली इतर माहिती ऑटोफिलसाठी उपलब्ध नसेल"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;तुमची प्राधान्य दिलेली सेवा &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; वर बदलायची आहे का?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; नवीन पासवर्ड, पासकी आणि इतर माहिती आतापासून येथे सेव्ह केली जाईल. काय ऑटोफिल केले जाऊ शकते हे निर्धारित करण्यासाठी &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; हे तुमच्या स्क्रीनवर असलेल्या गोष्टी वापरू शकते"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s वापरायचे आहे का?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"बंद करा"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"बदला"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"तुमच्याकडे फक्त ५ सेवा सुरू असू शकतात"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"दुसरी सेवा जोडण्यासाठी किमान १ सेवा बंद करा"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"कोणत्या गोष्टी ऑटोफिल करता येतील हे निश्चित करण्यासाठी %1$s हे तुमच्या स्क्रीनवर काय आहे ते वापरते."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"प्‍लेअर लपवा"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"प्‍लेअर दाखवा"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"मीडिया"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"कॅमेरा सॉफ्टवेअरच्या एक्स्टेंशनना अनुमती द्या"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"न बघता व्हिडिओग्राफी यांसारख्या प्रगत कॅमेरा वैशिष्ट्यांच्या डीफॉल्ट सॉफ्टवेअरची अंमलबजावणी सुरू करते."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ब्लूटूथ सुरू होईल"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"इंटरनेट"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"सिम"</string>
@@ -4930,7 +4933,7 @@
     <item msgid="1599558140284643834">"पॉवर सेव्ह मोड"</item>
     <item msgid="588427840913221601">"प्रक्रियेची स्थिती"</item>
   </string-array>
-    <string name="tare_dialog_confirm_button_title" msgid="9179397559760203348">"कंफर्म करा"</string>
+    <string name="tare_dialog_confirm_button_title" msgid="9179397559760203348">"कन्फर्म करा"</string>
     <string name="dream_preview_button_title" msgid="6637456541851795952">"पूर्वावलोकन"</string>
     <string name="dream_picker_category" msgid="7726447836872744867">"स्क्रीन सेव्हर निवडा"</string>
     <string name="dream_complications_toggle_title" msgid="4273232303027449163">"अतिरिक्त माहिती दाखवा"</string>
@@ -4960,8 +4963,8 @@
     <string name="bluetooth_details_audio_device_type_carkit" msgid="4439017600454703229">"कार किट"</string>
     <string name="bluetooth_details_audio_device_type_other" msgid="7019481234617207563">"इतर"</string>
     <string name="ingress_rate_limit_title" msgid="2106694002836274350">"नेटवर्कच्या डाउनलोड रेटची मर्यादा"</string>
-    <string name="ingress_rate_limit_summary" msgid="1097811019742438371">"इंटरनेट कनेक्टिव्हिटी पुरवणाऱ्या सर्व नेटवर्कना लागू होणारी नेटवर्क बँडविड्थ प्रवेश रेट मर्यादा कॉंफिगर करा."</string>
-    <string name="ingress_rate_limit_dialog_title" msgid="5359461052422633789">"नेटवर्कच्या डाउनलोड रेटची मर्यादा कॉंफिगर करा"</string>
+    <string name="ingress_rate_limit_summary" msgid="1097811019742438371">"इंटरनेट कनेक्टिव्हिटी पुरवणाऱ्या सर्व नेटवर्कना लागू होणारी नेटवर्क बँडविड्थ प्रवेश रेट मर्यादा कॉन्फिगर करा."</string>
+    <string name="ingress_rate_limit_dialog_title" msgid="5359461052422633789">"नेटवर्कच्या डाउनलोड रेटची मर्यादा कॉन्फिगर करा"</string>
     <string name="ingress_rate_limit_no_limit_entry" msgid="8741098826008012163">"कोणतीही मर्यादा नाही"</string>
     <string name="disable_phantom_process_monitor_title" msgid="8348108346706188771">"लहान मुलाच्या अ‍ॅप वापरावरील निर्बंध बंद करा"</string>
     <string name="disable_phantom_process_monitor_summary" msgid="3044464635550256985">"लहान मूल जे अ‍ॅप वापरत आहे त्या अ‍ॅपच्या सिस्टीम स्रोतांच्या वापरावरील निर्बंध बंद करा"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index b28b0ee..4e1ad2f 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -438,7 +438,7 @@
     <string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Ketahui lebih lanjut tentang Buka Kunci Jam Tangan"</string>
     <string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Tambahkan jam tangan"</string>
     <string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Alih keluar jam tangan"</string>
-    <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Buka kunci cap jari &amp; wajah"</string>
+    <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Buka Kunci Cap Jari &amp; Wajah"</string>
     <string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Buka Kunci Wajah &amp; Cap Jari untuk kerja"</string>
     <string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Persediaan diperlukan"</string>
     <string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Wajah dan cap jari ditambahkan"</string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Cara membuka kunci"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Sama seperti kunci skrin peranti"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Pilih kunci baharu untuk ruang peribadi?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Kunci secara automatik"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Kunci ruang privasi secara automatik"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Kunci ruang privasi secara automatik"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Anda boleh mengunci ruang privasi anda secara automatik jika anda tidak menggunakan peranti anda untuk suatu tempoh masa"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Setiap kali peranti dikunci"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Selepas 5 minit tanpa aktiviti"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Ketik penjuru kanan sebelah bawah pad sentuh untuk pilihan lain"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Kelajuan penuding"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Ketahui gerak isyarat pad sentuh"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Pergi ke skrin utama"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Leret ke atas dengan tiga jari di mana-mana sahaja pada pad sentuh anda"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Kembali"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Apl ini dapat menggunakan bateri di latar belakang. Bateri anda mungkin kehabisan lebih cepat daripada yang dijangkakan."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Alih keluar"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Batal"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Cas hingga penuh"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Semak aksesori pengecasan"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Ketahui lebih lanjut tentang pengecasan tidak serasi"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Pengurus Bateri"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatik, isi, autolengkap, data, kunci laluan, kata laluan"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Perubahan"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Terbuka"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Tiada yang dipilih"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Pastikan anda mempercayai apl ini&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; menggunakan item yang terdapat pada skrin anda untuk menentukan perkara yang boleh dilengkapkan secara automatik."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Kata laluan baharu, kunci laluan dan maklumat lain akan disimpan di sini mulai sekarang. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; mungkin menggunakan maklumat pada skrin anda untuk menentukan pengisian data automatik."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Perkhidmatan pilihan untuk kata laluan, kunci laluan &amp; autolengkap"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Matikan semua perkhidmatan?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Kata laluan, kunci laluan dan maklumat lain yang disimpan tidak akan tersedia untuk autolengkap apabila anda log masuk"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Tukarkan perkhidmatan pilihan anda kepada &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Kata laluan baharu, kunci laluan dan maklumat lain akan disimpan di sini mulai sekarang. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; mungkin menggunakan maklumat pada skrin anda untuk menentukan pengisian data automatik"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Gunakan %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Matikan"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Ubah"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Anda hanya boleh menghidupkan 5 perkhidmatan"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Matikan sekurang-kurangnya 1 perkhidmatan untuk menambahkan perkhidmatan lain"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s menggunakan maklumat pada skrin anda untuk menentukan pengisian data automatik."</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 723c0d4..6f5a2b7 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"လော့ခ်ဖွင့်ရန် နည်းလမ်းများ"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"စက်ဖန်သားပြင်လော့ခ်နှင့် အတူတူပင်ဖြစ်သည်"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"သီးသန့်နေရာအတွက် လော့ခ်အသစ် ရွေးမလား။"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"အလိုအလျောက် လော့ခ်ချရန်"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"သီးသန့်နေရာကို အလိုအလျောက် လော့ခ်ချခြင်း"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"သီးသန့်နေရာကို အလိုအလျောက် လော့ခ်ချခြင်း"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"သင့်စက်ပစ္စည်းကို အချိန်ကြာမြင့်စွာ အသုံးမပြုပါက သီးသန့်နေရာကို အလိုအလျောက် လော့ခ်ချနိုင်သည်"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"စက်ပစ္စည်းလော့ခ်ချချိန်တိုင်း"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"အသုံးမပြုချိန် ၅ မိနစ်ကြာပြီးနောက်"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"နောက်ထပ်ရွေးစရာအတွက် တာ့ချ်ပက်၏ အောက်ခြေညာထောင့်ကို တို့ပါ"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"မြားရွေ့နှုန်း"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"တာ့ချ်ပက်လက်ဟန်များကို လေ့လာရန်"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ပင်မစာမျက်နှာသို့ သွားရန်"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"တာ့ချ်ပက် တစ်နေရာရာ၌ လက်သုံးချောင်းဖြင့် အပေါ်ပွတ်ဆွဲပါ"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"နောက်သို့"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ဤအက်ပ်သည် နောက်ခံတွင် ဘက်ထရီကို အသုံးပြုနိုင်ပါသည်။ သင်၏ ဘက်ထရီသည် ခန့်မှန်းထားသည်ထက် စောလျင်စွာ ကုန်နိုင်ပါသည်။"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"ဖယ်ရှားရန်"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"မလုပ်တော့"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"အားအပြည့်သွင်းရန်"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"အားသွင်းပစ္စည်းကို စစ်ပါ"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"တွဲမသုံးနိုင်သော ကြားခံကိရိယာဖြင့် အားသွင်းခြင်းအကြောင်း ပိုမိုလေ့လာရန်"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ဘက်ထရီ စီမံခန့်ခွဲမှုစနစ်"</string>
@@ -3771,8 +3775,8 @@
     <string name="app_link_open_always_summary" msgid="4524005594295855117">"{count,plural, =1{အက်ပ်က လင့်ခ် # ခုကို စီမံရန် တောင်းဆိုသည်}other{အက်ပ်က လင့်ခ် # ခုကို စီမံရန် တောင်းဆိုသည်}}"</string>
     <string name="open_supported_links_footer" msgid="3188808142432787933">"အက်ပ်သည် အောက်ပါလင့်ခ်များကို စီမံရန် တောင်းဆိုသည်-"</string>
     <string name="assist_and_voice_input_title" msgid="6317935163145135914">"အကူနှင့် အသံဖြင့်စာရိုက်ခြင်း"</string>
-    <string name="default_assist_title" msgid="1182435129627493758">"ဒစ်ဂျစ်တယ် Assistant အက်ပ်"</string>
-    <string name="default_digital_assistant_title" msgid="5654663086385490838">"မူလဒစ်ဂျစ်တယ် Assistant အက်ပ်"</string>
+    <string name="default_assist_title" msgid="1182435129627493758">"ဒစ်ဂျစ်တယ်အထောက်အကူ အက်ပ်"</string>
+    <string name="default_digital_assistant_title" msgid="5654663086385490838">"မူရင်း ဒစ်ဂျစ်တယ်အထောက်အကူ အက်ပ်"</string>
     <string name="assistant_security_warning_agree" msgid="9013334158753473359">"OK"</string>
     <string name="default_browser_title" msgid="8342074390782390458">"ဘရောင်ဇာ အက်ပ်"</string>
     <string name="default_phone_title" msgid="7616730756650803827">"ဖုန်း အက်ပ်"</string>
@@ -4149,11 +4153,11 @@
     <string name="legacy_navigation_title" msgid="7877402855994423727">"ခလုတ် ၃ ခု ဖြင့် လမ်းညွှန်ခြင်း"</string>
     <string name="legacy_navigation_summary" msgid="5905301067778326433">"ဖန်သားပြင်၏ အောက်ခြေရှိ ခလုတ်များဖြင့် နောက်သို့ပြန်သွားပါ၊ \'ပင်မ\' သို့သွားပါ၊ အက်ပ်များကို ပြောင်းပါ။"</string>
     <string name="keywords_system_navigation" msgid="3131782378486554934">"စနစ် လမ်းညွှန်ခြင်း၊ ခလုတ် ၂ ခု ဖြင့် လမ်းညွှန်ခြင်း၊ ခလုတ် ၃ ခု ဖြင့် လမ်းညွှန်ခြင်း၊ လက်ဟန်ဖြင့် လမ်းညွှန်ခြင်း၊ ပွတ်ဆွဲခြင်း"</string>
-    <string name="assistant_gesture_category_title" msgid="2478251256585807920">"ဒစ်ဂျစ်တယ် Assistant"</string>
+    <string name="assistant_gesture_category_title" msgid="2478251256585807920">"ဒစ်ဂျစ်တယ်အထောက်အကူ"</string>
     <string name="assistant_corner_gesture_title" msgid="1895061522687002106">"Assistant ကို ညွှန်ကြားရန် ပွတ်ဆွဲပါ"</string>
     <string name="assistant_corner_gesture_summary" msgid="5012534700233017955">"ဒစ်ဂျစ်တယ် Assistant အက်ပ်ကို ညွှန်ကြားရန် အောက်ခြေထောင့်မှ အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
     <string name="assistant_long_press_home_gesture_title" msgid="4865972278738178753">"Assistant အတွက် ပင်မခလုတ် နှိပ်ထားခြင်း"</string>
-    <string name="assistant_long_press_home_gesture_summary" msgid="592882226105081447">"ဒစ်ဂျစ်တယ် Assistant အက်ပ်ကို ညွှန်ကြားရန် ပင်မခလုတ် နှိပ်ထားပါ။"</string>
+    <string name="assistant_long_press_home_gesture_summary" msgid="592882226105081447">"ဒစ်ဂျစ်တယ်အထောက်အကူ အက်ပ်ကို ညွှန်ကြားရန် ပင်မခလုတ် နှိပ်ထားပါ။"</string>
     <string name="low_label" msgid="6525629096999711220">"နိမ့်"</string>
     <string name="high_label" msgid="357503396626018487">"မြင့်"</string>
     <string name="left_edge" msgid="1513576842959071849">"ဘယ် အစွန်း"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"အလိုအလျောက်၊ ဖြည့်ခြင်း၊ အလိုအလျောက်ဖြည့်ခြင်း၊ ဒေတာ၊ လျှို့ဝှက်ကီး၊ စကားဝှက်"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"ပြောင်းရန်"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"ဖွင့်ရန်"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"တစ်ခုမျှ ရွေးမထားပါ"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;သင်သည် ဤအက်ပ်ကို ယုံကြည်စိတ်ချရကြောင်း သေချာပါစေ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; သည် သင်၏ဖန်သားပြင်ပေါ်ရှိ အရာများကို အသုံးပြု၍ မည်သည့်အရာများကို အော်တိုဖြည့်နိုင်ကြောင်း ဆုံးဖြတ်သည်။"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; သုံးမလား။&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ယခုမှစ၍ စကားဝှက်၊ လျှို့ဝှက်ကီးနှင့် အခြားအချက်အလက် အသစ်များကို ဤနေရာတွင် သိမ်းပါမည်။ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; က အော်တိုဖြည့်နိုင်သည်များအား ဆုံးဖြတ်ရန် သင့်ဖန်သားပြင်ပေါ်တွင် ရှိသည်များကို သုံးနိုင်သည်။"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"စကားဝှက်၊ လျှို့ဝှက်ကီး၊ အော်တိုဖြည့်ခြင်းတို့အတွက် ဦးစားပေး ဝန်ဆောင်မှု"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;ဝန်ဆောင်မှုအားလုံးကို ပိတ်သည်?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; စကားဝှက်များ၊ လျှို့ဝှက်ကီးများ၊ သိမ်းထားသော အခြားအချက်အလက်များကို သင်လက်မှတ်ထိုးဝင်သည့်အခါ အလိုအလျောက်ဖြည့်ရန် ရနိုင်မည်မဟုတ်ပါ"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;သင်၏ ဦးစားပေးဝန်ဆောင်မှုကို &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; သို့ပြောင်းသည် &lt;br/&gt; &lt;br/&gt; စကားဝှက်အသစ်များ၊ လျှို့ဝှက်ကီးများနှင့် အခြားအချက်အလက်များကို ယခုမှစ၍ ဤနေရာတွင် သိမ်းမည်။ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; က အော်တိုဖြည့်နိုင်သည်များအား ဆုံးဖြတ်ရန် သင့်ဖန်သားပြင်ပေါ်တွင် ရှိသည်များကို သုံးနိုင်သည်"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s သုံးမလား။"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ပိတ်ရန်"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"ပြောင်းရန်"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"ဝန်ဆောင်မှု ၅ ခုသာ ဖွင့်နိုင်သည်"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"အခြားဝန်ဆောင်မှုထည့်ရန် ဝန်ဆောင်မှုအနည်းဆုံး ၁ ခုကို ပိတ်ပါ"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s သည် အော်တိုဖြည့်နိုင်သည်များကို သိရှိရန် သင့်စခရင်ပေါ်ရှိ အရာများကို အသုံးပြုသည်။"</string>
@@ -4712,8 +4717,8 @@
     <string name="power_menu_setting_name" msgid="2394440932633137229">"ဖွင့်ပိတ်ခလုတ်ကို နှိပ်ထားခြင်း"</string>
     <string name="power_menu_long_press_category_title" msgid="1051146091093775002">"အသုံးပြုရန် ဖွင့်ပိတ်ခလုတ်ကို နှိပ်ထားခြင်း"</string>
     <string name="power_menu_long_press_for_power_menu_title" msgid="477584639843663599">"ပါဝါမီနူး"</string>
-    <string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"ဒစ်ဂျစ်တယ် Assistant"</string>
-    <string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"ဒစ်ဂျစ်တယ် Assistant သုံးရန်"</string>
+    <string name="power_menu_long_press_for_assistant_title" msgid="6557738348262616455">"ဒစ်ဂျစ်တယ်အထောက်အကူ"</string>
+    <string name="power_menu_summary_long_press_for_assistant" msgid="32706459458422952">"ဒစ်ဂျစ်တယ်အထောက်အကူ သုံးရန်"</string>
     <string name="power_menu_summary_long_press_for_power_menu" msgid="7617247135239683710">"ပါဝါမီနူး သုံးရန်"</string>
     <string name="lockscreen_privacy_not_secure" msgid="3251276389681975912">"အသုံးပြုရန် ဖန်သားပြင် လော့ခ်ကို ဦးစွာသတ်မှတ်ပါ"</string>
     <string name="power_menu_power_volume_up_hint" msgid="5619917593676125759">"ပါဝါမီနူး-\nဖွင့်ပိတ်ခလုတ်နှင့် အသံချဲ့ခလုတ်ကို တစ်ပြိုင်တည်း နှိပ်ပါ"</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"ပလေယာကို ဖျောက်ထားမည်"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"ပလေယာကို ပြရန်"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"မီဒီယာ"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"ကင်မရာဆော့ဖ်ဝဲ နောက်ဆက်တွဲများကို ခွင့်ပြုရန်"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Eyes Free ဗီဒီယိုပညာကဲ့သို့ အဆင့်မြင့် ကင်မရာတူးလ်များ၏ မူရင်းဆော့ဖ်ဝဲ ထည့်သွင်းခြင်းကို ဖွင့်သည်။"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ဘလူးတုသ် ပွင့်ပါမည်"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"အင်တာနက်"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"ဆင်းမ်ကတ်များ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index abb720e..8416ce9 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Måter å låse opp på"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Den samme som skjermlåsen for enheten"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Vil du velge en ny lås for det private området?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lås automatisk"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Lås privat område automatisk"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Lås det private området automatisk"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Du kan låse det private området ditt automatisk hvis du ikke har brukt enheten i et tidsrom."</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Hver gang enheten låses"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Etter 5 minutter uten aktivitet"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Mønster"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN-kode"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Passord"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Vil du fjerne alle typer enhetsopplåsing?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Vil du fjerne profilbeskyttelsen?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Et mønster beskytter telefonen hvis den blir mistet eller stjålet"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Et mønster beskytter telefonen hvis den blir mistet eller stjålet.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Dette sletter fingeravtrykkmodellen som er lagret på enheten. Ansiktsmodellen blir også slettet permanent og sikkert. Da kan du ikke bruke ansiktet eller fingeravtrykket til autentisering i apper."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"En PIN-kode beskytter telefonen hvis den blir mistet eller stjålet"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Du mister lagrede data, for eksempel PIN-koden din.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort som er konfigurert for kontaktløs betaling, fjernes.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Lommebøker og andre apper som krever enhetsopplåsing, fungerer kanskje ikke som de skal."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"En PIN-kode beskytter telefonen hvis den blir mistet eller stjålet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Dette sletter også fingeravtrykkmodellen som er lagret på enheten. Da kan du ikke bruke fingeravtrykket til autentisering i apper."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Du mister lagrede data, for eksempel PIN-koden og fingeravtrykksmodellen din.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort som er konfigurert for kontaktløs betaling, fjernes.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Lommebøker og andre apper som krever enhetsopplåsing, fungerer kanskje ikke som de skal."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"En PIN-kode beskytter telefonen hvis den blir mistet eller stjålet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Ansiktsmodellen blir også slettet permanent og sikkert. Du kan ikke bruke ansiktet til autentisering i apper."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Du mister lagrede data, for eksempel PIN-koden og ansiktsmodellen din.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort som er konfigurert for kontaktløs betaling, fjernes.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Lommebøker og andre apper som krever enhetsopplåsing, fungerer kanskje ikke som de skal."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"En PIN-kode beskytter telefonen hvis den blir mistet eller stjålet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Dette sletter fingeravtrykkmodellen som er lagret på enheten. Ansiktsmodellen blir også slettet permanent og sikkert. Da kan du ikke bruke ansiktet eller fingeravtrykket til autentisering i apper."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Du mister lagrede data, for eksempel PIN-koden og ansikts- og fingeravtrykksmodellen din.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort som er konfigurert for kontaktløs betaling, fjernes.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Lommebøker og andre apper som krever enhetsopplåsing, fungerer kanskje ikke som de skal."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Et passord beskytter telefonen hvis den blir mistet eller stjålet"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Et passord beskytter telefonen hvis den blir mistet eller stjålet.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Trykk nederst til høyre på styreflaten for alternativer"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Pekerhastighet"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Lær styreflatebevegelser"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Gå til startsiden"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Sveip opp med tre fingre hvor som helst på styreflaten"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Gå tilbake"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Denne appen kan bruke batteri i bakgrunnen. Batteriet kan gå tomt raskere enn forventet."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Fjern"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Avbryt"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Lad til batteriet er fullt"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Sjekk ladetilbehøret"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Finn ut mer om inkompatibel lading"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Batteristyring"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, fyll, autofyll, data, passnøkkel, passord"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Endre"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Åpne"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ingen er valgt"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Stoler du på denne appen?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google autofyll&gt;%1$s&lt;/xliff:g&gt; bruker det som er på skjermen, til å fastslå hva som kan fylles ut automatisk."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Vil du bruke &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Fra nå av blir nye passord, nye passnøkler og annen informasjon lagret her. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan bruke det som er på skjermen, for å avgjøre hva som kan fylles ut automatisk."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Foretrukket tjeneste for passord, passnøkler og autofyll"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Vil du slå av alle tjenester?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Passord, passnøkler og annen lagret informasjon kommer ikke til å være tilgjengelig for autofyll når du logger på"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Bytt foretrukket tjeneste til &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Fra nå av lagres nye passord, passnøkler og annen informasjon her. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan bruke det som er på skjermen, for å avgjøre hva som kan fylles ut automatisk."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Vil du bruke %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Slå av"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Endre"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Du kan bare ha 5 tjenester på"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Du må slå av minst 1 tjeneste for å legge til en annen"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s bruker det som er på skjermen din, for å avgjøre hva som kan autofylles."</string>
@@ -4613,7 +4629,7 @@
     <string name="erase_sim_fail_title" msgid="1445700500168357303">"Kan ikke slette eSIM-kortet"</string>
     <string name="erase_sim_fail_text" msgid="6898841004987411547">"Noe gikk galt, og dette eSIM-kortet ble ikke slettet.\n\nStart enheten på nytt, og prøv igjen."</string>
     <string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Koble til enheten"</string>
-    <string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Appen <xliff:g id="APPNAME">%1$s</xliff:g> vil bruke et midlertidig wifi-nettverk for å koble til enheten din"</string>
+    <string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g>-appen vil bruke et midlertidig wifi-nettverk for å koble til enheten din"</string>
     <string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Fant ingen enheter. Sørg for at enhetene er slått på og tilgjengelige for tilkobling."</string>
     <string name="network_connection_timeout_dialog_ok" msgid="6022675321823723755">"Prøv på nytt"</string>
     <string name="network_connection_errorstate_dialog_message" msgid="3360714322047603239">"Noe dukket opp. Appen har kansellert forespørselen om å velge en enhet."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Skjul spilleren"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Vis spilleren"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"medier"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Tillat utvidelser av kameraprogramvare"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Gjør det mulig å bruke standardimplementeringen av avanserte kamerafunksjoner som er programvarebasert, for eksempel Eyes Free-videografi."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth slås på"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internett"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-kort"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 925cde4..3059b21 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"अनलक गर्ने तरिकाहरू"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"डिभाइसको स्क्रिन लक जसरी नै"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"निजी स्पेसमा नयाँ लक चयन गर्ने हो?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"स्वतः लक गरियोस्"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"निजी स्पेस स्वतः लक गरियोस्"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"निजी स्पेस स्वतः लक गरियोस्"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"तपाईंले केही समयसम्म आफ्नो डिभाइस प्रयोग नगर्दा उक्त डिभाइसमा भएको निजी स्पेस स्वतः लक हुने बनाउन सक्नुहुन्छ"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"डिभाइस लक हुँदैपिच्छे"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"५ मिनेटसम्म निष्क्रिय भएपछि"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"थप विकल्पहरू हेर्न टचप्याडको पुछारको दायाँ कुनामा ट्याप गर्नुहोस्"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"पोइन्टरको गति"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"टचप्याड इसाराहरूका बारेमा जानकारी"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"होमपेजमा जाने तरिका"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"टचप्याडको जुनसुकै ठाउँमा तीन वटा औँलाले माथितिर स्वाइप गर्नुहोस्"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"पछाडि जाने तरिका"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"यो एप ब्याकग्राउन्डमा ब्याट्रीको खपत गर्न सक्षम हुने छ। तपाईंको ब्याट्री अपेक्षा गरेभन्दा चाँडै सकिन सक्छ।"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"हटाउनुहोस्"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"रद्द गर्नुहोस्"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"फुल चार्ज गर्नुहोस्"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"चार्जिङ एक्सेसरी जाँच्नुहोस्"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"नमिल्दो चार्जिङका बारेमा थप जान्नुहोस्"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ब्याट्री प्रबन्धक"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"अटो, फिल, अटोफिल, डेटा, पासकी, पासवर्ड"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"परिवर्तन गर्नुहोस्"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"खोल्नुहोस्"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"कुनै पनि विधि चयन गरिएको छैन"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;तपाईं यो एपमाथि भरोसा गर्नुहुन्छ भन्ने कुरा पक्का गर्नुहोस्&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; यस एपले अटोफिल गर्न सकिने कुराहरूको निर्धारण गर्न तपाईंको स्क्रिनमा भएका वस्तुहरूको प्रयोग गर्छ।"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; प्रयोग गर्ने हो?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; अबदेखि नयाँ पासवर्ड, पासकी तथा अन्य जानकारी यहाँ सेभ गरिने छन्। &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ले के-कस्ता जानकारी अटोफिल गर्न सकिन्छ भन्ने कुरा निर्धारण गर्न तपाईंको स्क्रिनमा भएका कुराहरू प्रयोग गर्न सक्छ।"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"पासवर्ड, पासकी र अटोफिलका हकमा रुचाइएको सेवा"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;सबै सेवाहरू अफ गर्ने हो?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; तपाईंले साइन इन गर्दा नयाँ पासवर्ड, पासकी तथा सेभ गरिएका अन्य जानकारी अटोफिल सुविधामा प्रयोग गर्न मिल्ने छैन"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;आफूलाई मन पर्ने सेवा परिवर्तन गरेर &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&amp;gt बनाउनुहोस्; अबदेखि नयाँ पासवर्ड, पासकी तथा अन्य जानकारी यहाँ सेभ गरिने छन्। &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ले के-कस्ता जानकारी अटोफिल गर्न सकिन्छ भन्ने कुरा निर्धारण गर्न तपाईंको स्क्रिनमा भएका कुराहरू प्रयोग गर्न सक्छ"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s प्रयोग गर्ने हो?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"अफ गर्नुहोस्"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"परिवर्तन गर्नुहोस्"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"तपाईं ५ वटा सेवाहरू मात्र अन गर्न सक्नुहुन्छ"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"अर्को सेवा अन गर्न कम्तीमा एउटा सेवा अफ गर्नुहोस्"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ले के-कस्ता जानकारी स्वतः भर्न सकिन्छ भन्ने कुरा निर्धारण गर्न तपाईंको स्क्रिनमा भएका कुराहरू प्रयोग गर्छ।"</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"प्लेयर लुकाउनुहोस्"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"प्लेयर देखाइयोस्"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"मिडिया"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"क्यामेरामा सफ्टवेयर एक्स्टेन्सनहरू प्रयोग गर्न दिनुहोस्"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"यसले Eyes Free भिडियोग्राफी जस्ता क्यामेराका उन्नत सुविधाहरूको डिफल्ट सफ्टवेयर प्रयोग गर्ने प्रक्रिया सुरु गर्छ।"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ब्लुटुथ अन हुने छ"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"इन्टरनेट"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 89891b2..c9004a3 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Manieren om te ontgrendelen"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Hetzelfde als de apparaatschermvergrendeling"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Nieuwe vergrendeling voor privégedeelte kiezen?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Automatisch vergrendelen"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Privégedeelte automatisch vergrendelen"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Privégedeelte automatisch vergrendelen"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Je kunt je privégedeelte automatisch laten vergrendelen als je je apparaat een tijdje niet hebt gebruikt"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Elke keer dat apparaat wordt vergrendeld"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Na 5 minuten inactiviteit"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tik rechtsonder op de touchpad voor meer opties"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Snelheid van aanwijzer"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Touchpadgebaren leren"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Naar de homepage"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Swipe ergens op je touchpad omhoog met 3 vingers"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Terug"</string>
@@ -2398,7 +2401,7 @@
     <string name="history_details_title" msgid="8628584613889559355">"Geschiedenisdetails"</string>
     <string name="advanced_battery_preference_title" msgid="3790901207877260883">"Batterijgebruik"</string>
     <string name="advanced_battery_preference_summary_with_hours" msgid="954091349133320955">"Bekijk gebruik voor afgelopen 24 uur"</string>
-    <string name="advanced_battery_preference_summary" msgid="2372763700477268393">"Gebruik sinds laatste volledige lading"</string>
+    <string name="advanced_battery_preference_summary" msgid="2372763700477268393">"Toon gebruik sinds laatste volle lading"</string>
     <string name="battery_details_title" msgid="3289680399291090588">"Batterijgebruik voor app"</string>
     <string name="details_subtitle" msgid="2550872569652785527">"Gebruiksdetails"</string>
     <string name="controls_subtitle" msgid="3759606830916441564">"Energieverbruik aanpassen"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Deze app kan de batterij op de achtergrond gebruiken. Je batterij is mogelijk eerder leeg dan verwacht."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Verwijderen"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Annuleren"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Opladen tot vol"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Oplaadaccessoire checken"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Meer informatie over opladen met een incompatibele oplader"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Batterijbeheer"</string>
@@ -3842,7 +3846,7 @@
     <string name="assist_access_screenshot_title" msgid="4395902231753643633">"Screenshot gebruiken"</string>
     <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Sta toe dat de assistentie-app toegang krijgt tot een afbeelding van het scherm"</string>
     <string name="assist_flash_title" msgid="5449512572885550108">"Scherm laten knipperen"</string>
-    <string name="assist_flash_summary" msgid="3032289860177784594">"Laat schermranden knipperen wanneer de assistentie-app toegang verkrijgt tot tekst op scherm of screenshot"</string>
+    <string name="assist_flash_summary" msgid="3032289860177784594">"Laat schermranden knipperen wanneer de assistentie-app toegang heeft tot tekst op scherm of screenshot"</string>
     <string name="assist_footer" msgid="8248015363806299068">"Assistentie-apps kunnen je helpen op basis van de informatie op het scherm dat je bekijkt. Bepaalde apps ondersteunen launcher- en spraakinvoerservices voor geïntegreerde support."</string>
     <string name="average_memory_use" msgid="717313706368825388">"Gemiddeld geheugengebruik"</string>
     <string name="maximum_memory_use" msgid="2171779724001152933">"Maximaal geheugengebruik"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatisch, invullen, automatisch invullen, gegevens, toegangssleutel, wachtwoord"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Wijzigen"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Openen"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Geen geselecteerd"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Zorg dat je deze app vertrouwt&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; maakt gebruik van de content op je scherm om te bepalen wat automatisch kan worden aangevuld."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; gebruiken?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nieuwe wachtwoorden, toegangssleutels en andere informatie worden vanaf nu hier opgeslagen. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan wat er op je scherm staat gebruiken om te bepalen wat automatisch kan worden ingevuld."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Voorkeursservice voor wachtwoorden, toegangssleutels en automatisch invullen"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Alle services uitzetten?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Wachtwoorden, toegangssleutels en andere opgeslagen informatie worden niet automatisch worden ingevuld als je inlogt."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&amp;gtWijzig je voorkeursservice in &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nieuwe wachtwoorden, toegangssleutels en andere informatie worden vanaf nu hier opgeslagen. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan wat er op je scherm staat gebruiken om te bepalen wat automatisch kan worden ingevuld."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s gebruiken?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Uitzetten"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Wijzigen"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Er kunnen maar 5 services aanstaan"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Zet minsten 1 service uit om een andere toe te voegen"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s gebruikt wat er op je scherm staat om te bepalen wat automatisch kan worden ingevuld."</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 6e46d58..ce16bb1 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"ଅନଲକ କରିବାର ଉପାୟ"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ଡିଭାଇସ ସ୍କ୍ରିନ ଲକ ପରି ସମାନ"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ପ୍ରାଇଭେଟ ସ୍ପେସ ପାଇଁ ଏକ ନୂଆ ଲକ ବାଛିବେ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ସ୍ୱତଃ ଲକ କରନ୍ତୁ"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ପ୍ରାଇଭେଟ ସ୍ପେସକୁ ସ୍ୱତଃ ଲକ କରନ୍ତୁ"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ପ୍ରାଇଭେଟ ସ୍ପେସକୁ ସ୍ୱତଃ ଲକ କରନ୍ତୁ"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"ଯଦି ଆପଣ ଆପଣଙ୍କ ଡିଭାଇସକୁ ଏକ ସମୟ ଅବଧି ପାଇଁ ବ୍ୟବହାର କରିନାହାଁନ୍ତି ତେବେ ଆପଣଙ୍କ ପ୍ରାଇଭେଟ ସ୍ପେସକୁ ଆପଣ ସ୍ୱତଃ ଲକ କରିପାରିବେ"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ପ୍ରତି ଥର ଡିଭାଇସ ଲକ ହେଲେ"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 ମିନିଟ ନିଷ୍କ୍ରିୟ ରହିବା ପରେ"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"ପାଟର୍ନ"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"ପାସୱାର୍ଡ"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"ସମସ୍ତ ପ୍ରକାରର ଡିଭାଇସ ଅନଲକ କାଢ଼ିଦେବେ?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"ପ୍ରୋଫାଇଲ୍‌ ସୁରକ୍ଷା କାଢ଼ିଦେବେ?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"ଯଦି ଆପଣଙ୍କ ଫୋନ୍ ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"ଯଦି ଆପଣଙ୍କ ଫୋନ୍ ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>ଏହା ଆପଣଙ୍କ ଡିଭାଇସରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଟିପଚିହ୍ନ ମଡେଲକୁ ଡିଲିଟ୍ କରିଥାଏ। ଆପଣଙ୍କ ଫେସ୍ ମଡେଲକୁ ମଧ୍ୟ ସ୍ଥାୟୀ ଏବଂ ସୁରକ୍ଷିତ ଭାବରେ ଡିଲିଟ୍ କରାଯିବ। ଆପଗୁଡ଼ିକରେ ପ୍ରମାଣୀକରଣ ପାଇଁ ଆପଣଙ୍କ ଚେହେରା ଏବଂ ଟିପଚିହ୍ନ ବ୍ୟବହାର କରିବାକୁ ଆପଣ ସକ୍ଷମ ହେବେ ନାହିଁ।"</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"ଯଦି ଆପଣଙ୍କ ଫୋନ୍ ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"ଆପଣ ଆପଣଙ୍କ PIN ପରି ସେଭ ହୋଇଥିବା ଡାଟା ହରାଇବେ।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>କଣ୍ଟାକ୍ଟଲେସ ପେମେଣ୍ଟ କରିବା ପାଇଁ ସେଟ ଅପ କରାଯାଇଥିବା କାର୍ଡଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯିବ।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>ଡିଭାଇସ ଅନଲକ ଆବଶ୍ୟକ କରୁଥିବା ୱାଲେଟଗୁଡ଼ିକ ଏବଂ ଅନ୍ୟ ଆପ୍ସ ସଠିକ ଭାବରେ କାମ କରିନପାରେ।"</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"ଯଦି ଆପଣଙ୍କ ଫୋନ୍ ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।<xliff:g id="EMPTY_LINE">
 
 </xliff:g>ଏହା ଆପଣଙ୍କ ଡିଭାଇସରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଟିପଚିହ୍ନ ମଡେଲକୁ ମଧ୍ୟ ଡିଲିଟ୍ କରିଥାଏ। ଆପଗୁଡ଼ିକରେ ପ୍ରମାଣୀକରଣ ପାଇଁ ଆପଣଙ୍କ ଟିପଚିହ୍ନ ବ୍ୟବହାର କରିବାକୁ ଆପଣ ସକ୍ଷମ ହେବେ ନାହିଁ।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"ଆପଣ ଆପଣଙ୍କ PIN ଏବଂ ଟିପଚିହ୍ନ ମଡେଲ ପରି ସେଭ ହୋଇଥିବା ଡାଟା ହରାଇବେ।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>କଣ୍ଟାକ୍ଟଲେସ ପେମେଣ୍ଟ କରିବା ପାଇଁ ସେଟ ଅପ କରାଯାଇଥିବା କାର୍ଡଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯିବ।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>ଡିଭାଇସ ଅନଲକ ଆବଶ୍ୟକ କରୁଥିବା ୱାଲେଟଗୁଡ଼ିକ ଏବଂ ଅନ୍ୟ ଆପ୍ସ ସଠିକ ଭାବରେ କାମ କରିନପାରେ।"</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"ଯଦି ଆପଣଙ୍କ ଫୋନ୍ ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।<xliff:g id="EMPTY_LINE">
 
 </xliff:g>ଆପଣଙ୍କ ଫେସ୍ ମଡେଲକୁ ମଧ୍ୟ ସ୍ଥାୟୀ ଏବଂ ସୁରକ୍ଷିତ ଭାବରେ ଡିଲିଟ୍ କରାଯିବ। ଆପଗୁଡ଼ିକରେ ପ୍ରମାଣୀକରଣ ପାଇଁ ଆପଣଙ୍କ ଚେହେରା ବ୍ୟବହାର କରିବାକୁ ଆପଣ ସକ୍ଷମ ହେବେ ନାହିଁ।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"ଆପଣ ଆପଣଙ୍କ PIN ଏବଂ ଫେସ ମଡେଲ ପରି ସେଭ ହୋଇଥିବା ଡାଟା ହରାଇବେ।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>କଣ୍ଟାକ୍ଟଲେସ ପେମେଣ୍ଟ କରିବା ପାଇଁ ସେଟ ଅପ କରାଯାଇଥିବା କାର୍ଡଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯିବ।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>ଡିଭାଇସ ଅନଲକ ଆବଶ୍ୟକ କରୁଥିବା ୱାଲେଟଗୁଡ଼ିକ ଏବଂ ଅନ୍ୟ ଆପ୍ସ ସଠିକ ଭାବରେ କାମ କରିନପାରେ।"</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"ଯଦି ଆପଣଙ୍କ ଫୋନ୍ ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।<xliff:g id="EMPTY_LINE">
 
 </xliff:g>ଏହା ଆପଣଙ୍କ ଡିଭାଇସରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଟିପଚିହ୍ନ ମଡେଲକୁ ଡିଲିଟ୍ କରିଥାଏ। ଆପଣଙ୍କ ଫେସ୍ ମଡେଲକୁ ମଧ୍ୟ ସ୍ଥାୟୀ ଏବଂ ସୁରକ୍ଷିତ ଭାବରେ ଡିଲିଟ୍ କରାଯିବ। ଆପଗୁଡ଼ିକରେ ପ୍ରମାଣୀକରଣ ପାଇଁ ଆପଣଙ୍କ ଚେହେରା ଏବଂ ଟିପଚିହ୍ନ ବ୍ୟବହାର କରିବାକୁ ଆପଣ ସକ୍ଷମ ହେବେ ନାହିଁ।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"ଆପଣ ଆପଣଙ୍କ PIN, ଫେସ ଏବଂ ଟିପଚିହ୍ନ ମଡେଲଗୁଡ଼ିକ ପରି ସେଭ ହୋଇଥିବା ଡାଟା ହରାଇବେ।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>କଣ୍ଟାକ୍ଟଲେସ ପେମେଣ୍ଟ କରିବା ପାଇଁ ସେଟ ଅପ କରାଯାଇଥିବା କାର୍ଡଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯିବ।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>ଡିଭାଇସ ଅନଲକ ଆବଶ୍ୟକ କରୁଥିବା ୱାଲେଟଗୁଡ଼ିକ ଏବଂ ଅନ୍ୟ ଆପ୍ସ ସଠିକ ଭାବରେ କାମ କରିନପାରେ।"</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"ଯଦି ଆପଣଙ୍କ ଫୋନ୍ ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"ଯଦି ଆପଣଙ୍କ ଫୋନ୍ ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।<xliff:g id="EMPTY_LINE">
 
@@ -1697,7 +1707,7 @@
     <string name="force_stop" msgid="2681771622136916280">"ବାଧ୍ୟତାର ସହ ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="archive" msgid="9074663845068632127">"ଆର୍କାଇଭ କରନ୍ତୁ"</string>
     <string name="restore" msgid="7622486640713967157">"ରିଷ୍ଟୋର କରନ୍ତୁ"</string>
-    <string name="restoring_step_one" msgid="3465050101254272874">"ପୁନରୁଦ୍ଧାର ହେଉଛି…"</string>
+    <string name="restoring_step_one" msgid="3465050101254272874">"ରିଷ୍ଟୋର ହେଉଛି"</string>
     <string name="restoring_step_two" msgid="140484846432595108">"ରିଷ୍ଟୋର କରାଯାଉଛି।"</string>
     <string name="restoring_step_three" msgid="3712883580876329811">"ରିଷ୍ଟୋର କରାଯାଉଛି.."</string>
     <string name="restoring_step_four" msgid="8966846882470446209">"ରିଷ୍ଟୋର୍ କରାଯାଉଛି..."</string>
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"ଅଧିକ ବିକଳ୍ପ ପାଇଁ ଟଚପେଡର ନିମ୍ନ ଡାହାଣ କୋଣରେ ଟାପ କରନ୍ତୁ"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"ପଏଣ୍ଟରର ସ୍ପିଡ"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ଟଚପେଡର ଜେଶ୍ଚରଗୁଡ଼ିକ ବିଷୟରେ ଜାଣନ୍ତୁ"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ହୋମକୁ ଯାଆନ୍ତୁ"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"ଟଚପେଡରେ ଯେ କୌଣସି ସ୍ଥାନରେ ତିନୋଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ କର"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ପଛକୁ ଫେରନ୍ତୁ"</string>
@@ -2054,7 +2068,7 @@
     <string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"ବୁଝିଗଲି"</string>
     <string name="accessibility_tutorial_dialog_link_button" msgid="6797349445794031781">"ବଟନ ସେଟିଂସ"</string>
     <string name="accessibility_shortcut_title" msgid="8125867833704517463">"<xliff:g id="SERVICE">%1$s</xliff:g> ସର୍ଟକଟ୍"</string>
-    <string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ୍"</string>
+    <string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ"</string>
     <string name="accessibility_shortcut_edit_summary_software_gesture" msgid="5489284264414421286">"ଆକ୍ସେସିବିଲିଟୀ ଜେଶ୍ଚର୍"</string>
     <string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"2 ଆଙ୍ଗୁଠି ସାହାଯ୍ୟରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
     <string name="accessibility_shortcut_edit_dialog_title_software_gesture_talkback" msgid="7422753388389160524">"3 ଆଙ୍ଗୁଠି ସାହାଯ୍ୟରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
@@ -2065,8 +2079,8 @@
     <string name="accessibility_shortcut_edit_dialog_summary_software_gesture_talkback" msgid="84483464524360845">"3ଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ।\n\nଫିଚରଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବାକୁ, 3ଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରି ଧରି ରଖନ୍ତୁ।"</string>
     <string name="accessibility_shortcut_edit_dialog_summary_software_floating" msgid="4459254227203203324"><annotation id="link">"ଅଧିକ ବିକଳ୍ପ"</annotation></string>
     <string name="footer_learn_more_content_description" msgid="8843798273152131341">"<xliff:g id="SERVICE">%1$s</xliff:g> ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ"</string>
-    <string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖନ୍ତୁ"</string>
-    <string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖନ୍ତୁ"</string>
+    <string name="accessibility_shortcut_edit_dialog_title_hardware" msgid="2356853121810443026">"ଭଲ୍ୟୁମ କୀ\'କୁ ଧରି ରଖନ୍ତୁ"</string>
+    <string name="accessibility_shortcut_hardware_keyword" msgid="3921915304537166064">"ଭଲ୍ୟୁମ କୀ\'କୁ ଧରି ରଖନ୍ତୁ"</string>
     <string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"ଉଭୟ ଭଲ୍ୟୁମ୍ କୀ’କୁ ଦବାଇ ଧରି ରଖନ୍ତୁ"</string>
     <string name="accessibility_shortcut_edit_dialog_title_two_finger_double_tap" msgid="2271778556854020996">"ସ୍କ୍ରିନକୁ ଦୁଇଟି-ଆଙ୍ଗୁଠିରେ ଦୁଇଥର-ଟାପ କରନ୍ତୁ"</string>
     <string name="accessibility_shortcut_two_finger_double_tap_keyword" msgid="2971265341474137433">"ସ୍କ୍ରିନକୁ ଦୁଇଟି-ଆଙ୍ଗୁଠିରେ ଦୁଇଥର-ଟାପ କରନ୍ତୁ"</string>
@@ -2191,9 +2205,9 @@
     <string name="captioning_more_options_title" msgid="3484496882942539652">"ଅଧିକ ବିକଳ୍ପ"</string>
     <string name="accessibility_captioning_preference_intro" msgid="8995427146374031134">"କ୍ୟାପ୍ସନ ପଢ଼ିବା ସହଜ କରିବାକୁ ଏହାର ଆକାର ଓ ଷ୍ଟାଇଲକୁ କଷ୍ଟମାଇଜ କରନ୍ତୁ"</string>
     <string name="accessibility_captioning_preference_summary" msgid="8335768472978374255">"ଏହି କ୍ୟାପ୍ସନ ପସନ୍ଦଗୁଡ଼ିକ ସମସ୍ତ ମିଡିଆ ଆପ୍ସ ଦ୍ୱାରା ସମର୍ଥିତ ନୁହେଁ"</string>
-    <string name="accessibility_shortcut_type_software" msgid="2552732582767687515">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ୍"</string>
+    <string name="accessibility_shortcut_type_software" msgid="2552732582767687515">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ"</string>
     <string name="accessibility_shortcut_type_software_gesture" msgid="5608959693931019059">"ତଳୁ 2-ଆଙ୍ଗୁଠି ସାହାଯ୍ୟରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
-    <string name="accessibility_shortcut_type_hardware" msgid="4834144210432451916">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖନ୍ତୁ"</string>
+    <string name="accessibility_shortcut_type_hardware" msgid="4834144210432451916">"ଭଲ୍ୟୁମ କୀ\'କୁ ଧରି ରଖନ୍ତୁ"</string>
     <string name="accessibility_shortcut_type_triple_tap" msgid="7717524216825494543">"ଟ୍ରିପଲ୍ ଟାପ୍ ସ୍କ୍ରିନ୍"</string>
     <string name="accessibility_hearingaid_instruction_continue_button" msgid="3367260988024430722">"ଜାରି ରଖନ୍ତୁ"</string>
     <string name="accessibility_hearingaid_title" msgid="1263619711863375614">"ଶ୍ରବଣ ଡିଭାଇସଗୁଡ଼ିକ"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ଏହି ଆପ୍‌ ବ୍ୟାକ୍‌ଗ୍ରାଉଣ୍ଡରେ ବ୍ୟାଟେରୀ ବ୍ୟବହାର କରିପାରିବ। ଆପଣଙ୍କ ବ୍ୟାଟେରୀ ଅନୁମାନ କରିଥିବା ସମୟର ପୂର୍ବରୁ ହିଁ ସରିଯାଇପାରେ।"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"କାଢ଼ିଦିଅନ୍ତୁ"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"ବାତିଲ"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"ସମ୍ପୂର୍ଣ୍ଣ ଭାବେ ଚାର୍ଜ କରନ୍ତୁ"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ଚାର୍ଜିଂ ଆକସେସୋରୀକୁ ଯାଞ୍ଚ କରନ୍ତୁ"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"ଇନକମ୍ପାଟିବଲ ଚାର୍ଜିଂ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ବ୍ୟାଟେରୀ ମ୍ୟାନେଜର୍‌"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ସ୍ୱତଃ, ପୂରଣ, ଅଟୋଫିଲ, ଡାଟା, ପାସକୀ, ପାସୱାର୍ଡ"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"ଖୋଲନ୍ତୁ"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"କିଛି ଚୟନ କରାଯାଇନାହିଁ"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ଆପଣ ଏହି ଆପ୍‌କୁ ବିଶ୍ୱାସ କରୁଥିବା ନିଶ୍ଚିତ କରନ୍ତୁ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; କ\'ଣ ଅଟୋଫିଲ୍‌ କରାଯାଇପାରିବ ନିର୍ଦ୍ଧାରଣ କରିବା ପାଇଁ, Google Autofill ଆପଣଙ୍କ ସ୍କ୍ରୀନ୍‌ରେ ଯାହା ଥାଏ, ତାହା ବ୍ୟବହାର କରେ।"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ବର୍ତ୍ତମାନଠାରୁ ନୂଆ ପାସୱାର୍ଡ, ପାସକୀ ଏବଂ ଅନ୍ୟ ସୂଚନା ଏଠାରେ ସେଭ ହେବ। କଣ ଅଟୋଫିଲ କରାଯାଇପାରିବ ତାହା ସ୍ଥିର କରିବାକୁ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଯାହା ଥାଏ ତାକୁ ବ୍ୟବହାର କରିପାରେ।"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"ପାସୱାର୍ଡ, ପାସକୀ ଏବଂ ଅଟୋଫିଲ ପାଇଁ ପସନ୍ଦର ସେବାଗୁଡ଼ିକ"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;ସମସ୍ତ ସେବାକୁ ବନ୍ଦ କରିବେ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ଆପଣ ସାଇନ ଇନ କଲେ ପାସୱାର୍ଡ, ପାସକୀ ଏବଂ ଅନ୍ୟ ସେଭ କରାଯାଇଥିବା ସୂଚନା ଅଟୋଫିଲ ପାଇଁ ଉପଲବ୍ଧ ହେବ ନାହିଁ"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;ଆପଣଙ୍କ ପସନ୍ଦର ସେବାକୁ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt;ରେ ପରିବର୍ତ୍ତନ କରନ୍ତୁ &lt;br/&gt; ବର୍ତ୍ତମାନଠାରୁ ନୂଆ ପାସୱାର୍ଡ, ପାସକୀ ଏବଂ ଅନ୍ୟ ସୂଚନାକୁ ଏଠାରେ ସେଭ କରାଯିବ। କଣ ଅଟୋଫିଲ କରାଯାଇପାରିବ ତାହା ସ୍ଥିର କରିବାକୁ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଯାହା ଥାଏ ତାକୁ ବ୍ୟବହାର କରିପାରେ"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$sକୁ ବ୍ୟବହାର କରିବେ?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ବନ୍ଦ କରନ୍ତୁ"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"ଏଥିରେ ଆପଣ କେବଳ 5 ସେବା ରଖିପାରିବେ"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"ଅନ୍ୟ ଏକ ସେବା ଯୋଗ କରିବାକୁ ଅତି କମରେ 1 ସେବାକୁ ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"କଣ ଅଟୋଫିଲ କରାଯାଇପାରିବ ତାହା ସ୍ଥିର କରିବାକୁ %1$s ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଯାହା ଥାଏ ତାକୁ ବ୍ୟବହାର କରେ।"</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"ପ୍ଲେୟାରକୁ ଲୁଚାନ୍ତୁ"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"ପ୍ଲେୟାର୍ ଦେଖାନ୍ତୁ"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"ମିଡିଆ"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"କେମେରା ସଫ୍ଟୱେର ଏକ୍ସଟେନସନଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Eyes Free ଭିଡିଓଗ୍ରାଫି ପରି ଉନ୍ନତ କେମେରା ଫିଚରଗୁଡ଼ିକର ଡିଫଲ୍ଟ ସଫ୍ଟୱେର କାର୍ଯ୍ୟକାରିତାକୁ ସକ୍ଷମ କରେ।"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ବ୍ଲୁଟୁଥ୍ ଚାଲୁ ହେବ"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"ଇଣ୍ଟରନେଟ"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMଗୁଡ଼ିକ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 696d569..d5505e3 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"ਅਣਲਾਕ ਕਰਨ ਦੇ ਤਰੀਕੇ"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"ਡੀਵਾਈਸ ਸਕ੍ਰੀਨ ਲਾਕ ਵਰਗਾ"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ਕੀ ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਲਈ ਨਵਾਂ ਲਾਕ ਚੁਣਨਾ ਹੈ?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ਆਪਣੇ ਆਪ ਲਾਕ ਹੋਣ ਦੀ ਸੁਵਿਧਾ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ਨਿੱਜੀ ਸਪੇਸ ਆਪਣੇ ਆਪ ਲਾਕ ਹੋਣ ਦੀ ਸੁਵਿਧਾ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ਪ੍ਰਾਈਵੇਟ ਸਪੇਸ ਆਪਣੇ ਆਪ ਲਾਕ ਹੋਣ ਦੀ ਸੁਵਿਧਾ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"ਜੇ ਤੁਸੀਂ ਕੁਝ ਸਮੇਂ ਲਈ ਆਪਣੇ ਡੀਵਾਈਸ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ ਹੈ, ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ ਇਹ ਵਿਕਲਪ ਹੈ ਕਿ ਤੁਹਾਡੀ ਨਿੱਜੀ ਸਪੇਸ ਆਪਣੇ ਆਪ ਲਾਕ ਹੋ ਜਾਵੇਗੀ"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ਹਰ ਵਾਰ ਡੀਵਾਈਸ ਦੇ ਲਾਕ ਹੋਣ \'ਤੇ"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"ਅਕਿਰਿਆਸ਼ੀਲਤਾ ਦੇ 5 ਮਿੰਟ ਬਾਅਦ"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"ਪੈਟਰਨ"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"ਪਿੰਨ"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"ਪਾਸਵਰਡ"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"ਕੀ ਸਾਰੇ ਕਿਸਮ ਦੇ ਡੀਵਾਈਸ ਅਣਲਾਕ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"ਕੀ ਪ੍ਰੋਫਾਈਲ ਰੱਖਿਆ ਹਟਾਉਣੀ ਹੈ?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>ਇਹ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਸਟੋਰ ਕੀਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਮਾਡਲ ਨੂੰ ਮਿਟਾ ਦਿੰਦਾ ਹੈ। ਤੁਹਾਡੇ ਚਿਹਰੇ ਦਾ ਮਾਡਲ ਵੀ ਪੱਕੇ ਤੌਰ \'ਤੇ ਅਤੇ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਐਪਾਂ ਵਿੱਚ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਆਪਣਾ ਚਿਹਰਾ ਜਾਂ ਫਿੰਗਰਪ੍ਰਿੰਟ ਨਹੀਂ ਵਰਤ ਸਕੋਗੇ।"</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"ਤੁਸੀਂ ਆਪਣੇ ਪਿੰਨ ਵਰਗੇ ਰੱਖਿਅਤ ਕੀਤੇ ਡਾਟੇ ਨੂੰ ਗੁਆ ਬੈਠੋਗੇ।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>\'ਸੰਪਰਕ-ਰਹਿਤ ਭੁਗਤਾਨ\' ਲਈ ਸੈੱਟ ਕੀਤੇ ਕਾਰਡ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallet ਅਤੇ ਹੋਰ ਐਪਾਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਡੀਵਾਈਸ ਅਣਲਾਕ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਉਹ ਸ਼ਾਇਦ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ।"</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।<xliff:g id="EMPTY_LINE">
 
 </xliff:g>ਇਹ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਸਟੋਰ ਕੀਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਮਾਡਲ ਨੂੰ ਵੀ ਮਿਟਾ ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਐਪਾਂ ਵਿੱਚ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਆਪਣਾ ਫਿੰਗਰਪ੍ਰਿੰਟ ਨਹੀਂ ਵਰਤ ਸਕੋਗੇ।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"ਤੁਸੀਂ ਆਪਣੇ ਪਿੰਨ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੇ ਮਾਡਲ ਵਰਗੇ ਰੱਖਿਅਤ ਕੀਤੇ ਡਾਟੇ ਨੂੰ ਗੁਆ ਬੈਠੋਗੇ।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>\'ਸੰਪਰਕ-ਰਹਿਤ ਭੁਗਤਾਨ\' ਲਈ ਸੈੱਟ ਕੀਤੇ ਕਾਰਡ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallet ਅਤੇ ਹੋਰ ਐਪਾਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਡੀਵਾਈਸ ਅਣਲਾਕ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਉਹ ਸ਼ਾਇਦ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ।"</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।<xliff:g id="EMPTY_LINE">
 
 </xliff:g>ਤੁਹਾਡੇ ਚਿਹਰੇ ਦਾ ਮਾਡਲ ਵੀ ਪੱਕੇ ਤੌਰ \'ਤੇ ਅਤੇ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਐਪਾਂ ਵਿੱਚ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਆਪਣਾ ਚਿਹਰਾ ਨਹੀਂ ਵਰਤ ਸਕੋਗੇ।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"ਤੁਸੀਂ ਆਪਣੇ ਪਿੰਨ ਅਤੇ ਚਿਹਰੇ ਦੇ ਮਾਡਲ ਵਰਗੇ ਰੱਖਿਅਤ ਕੀਤੇ ਡਾਟੇ ਨੂੰ ਗੁਆ ਬੈਠੋਗੇ।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>\'ਸੰਪਰਕ-ਰਹਿਤ ਭੁਗਤਾਨ\' ਲਈ ਸੈੱਟ ਕੀਤੇ ਕਾਰਡ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallet ਅਤੇ ਹੋਰ ਐਪਾਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਡੀਵਾਈਸ ਅਣਲਾਕ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਉਹ ਸ਼ਾਇਦ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ।"</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।<xliff:g id="EMPTY_LINE">
 
 </xliff:g>ਇਹ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਸਟੋਰ ਕੀਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਮਾਡਲ ਨੂੰ ਮਿਟਾ ਦਿੰਦਾ ਹੈ। ਤੁਹਾਡੇ ਚਿਹਰੇ ਦਾ ਮਾਡਲ ਵੀ ਪੱਕੇ ਤੌਰ \'ਤੇ ਅਤੇ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਐਪਾਂ ਵਿੱਚ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਆਪਣਾ ਚਿਹਰਾ ਜਾਂ ਫਿੰਗਰਪ੍ਰਿੰਟ ਨਹੀਂ ਵਰਤ ਸਕੋਗੇ।"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"ਤੁਸੀਂ ਆਪਣੇ ਪਿੰਨ, ਚਿਹਰੇ ਦੇ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੇ ਮਾਡਲ ਵਰਗੇ ਰੱਖਿਅਤ ਕੀਤੇ ਡਾਟੇ ਨੂੰ ਗੁਆ ਬੈਠੋਗੇ।<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>\'ਸੰਪਰਕ-ਰਹਿਤ ਭੁਗਤਾਨ\' ਲਈ ਸੈੱਟ ਕੀਤੇ ਕਾਰਡ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Wallet ਅਤੇ ਹੋਰ ਐਪਾਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਡੀਵਾਈਸ ਅਣਲਾਕ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਉਹ ਸ਼ਾਇਦ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ।"</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"ਤੁਹਾਡਾ ਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"ਹੋਰ ਵਿਕਲਪਾਂ ਲਈ ਟੱਚਪੈਡ ਦੇ ਹੇਠਲੇ ਸੱਜੇ ਕੋਨੇ \'ਤੇ ਟੈਪ ਕਰੋ"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"ਪੁਆਇੰਟਰ ਸਪੀਡ"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ਟੱਚਪੈਡ ਇਸ਼ਾਰਿਆਂ ਬਾਰੇ ਜਾਣੋ"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ਹੋਮ \'ਤੇ ਜਾਓ"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"ਆਪਣੇ ਟੱਚਪੈਡ \'ਤੇ ਕਿਤੇ ਵੀ ਤਿੰਨ ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ਵਾਪਸ ਜਾਓ"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ਇਹ ਐਪ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕੇਗੀ। ਤੁਹਾਡੀ ਬੈਟਰੀ ਉਮੀਦ ਨਾਲੋਂ ਛੇਤੀ ਹੀ ਖਤਮ ਹੋ ਸਕਦੀ ਹੈ।"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"ਹਟਾਓ"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"ਰੱਦ ਕਰੋ"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"ਪੂਰਾ ਚਾਰਜ ਕਰੋ"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ਚਾਰਜਿੰਗ ਐਕਸੈਸਰੀ ਦੀ ਜਾਂਚ ਕਰੋ"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"ਗੈਰ-ਅਨੁਰੂਪ ਚਾਰਜਿੰਗ ਬਾਰੇ ਹੋਰ ਜਾਣੋ"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ਬੈਟਰੀ ਪ੍ਰਬੰਧਕ"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ਆਟੋ, ਫਿਲ, ਆਟੋਫਿਲ, ਡਾਟਾ, ਪਾਸਕੀ, ਪਾਸਵਰਡ"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"ਬਦਲੋ"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"ਖੋਲ੍ਹੋ"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"ਕੁਝ ਨਹੀਂ ਚੁਣਿਆ"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਇਸ ਐਪ \'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹੋ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ਆਪਣੇ-ਆਪ ਭਰੀਆਂ ਜਾ ਸਕਣ ਵਾਲੀਆਂ ਚੀਜ਼ਾਂ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਮੌਜੂਦ ਚੀਜ਼ਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ਹੁਣ ਤੋਂ ਨਵੇਂ ਪਾਸਵਰਡ, ਪਾਸਕੀਆਂ ਅਤੇ ਹੋਰ ਜਾਣਕਾਰੀ ਨੂੰ ਇੱਥੇ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾਵੇਗਾ। &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ਵੱਲੋਂ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਖ ਰਹੀ ਸਮੱਗਰੀ ਦੇ ਆਧਾਰ \'ਤੇ ਇਹ ਨਿਰਧਾਰਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿ ਕਿਹੜੀ ਜਾਣਕਾਰੀ ਆਟੋਫਿਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"ਪਾਸਵਰਡਾਂ, ਪਾਸਕੀਆਂ ਅਤੇ ਆਟੋਫਿਲ ਲਈ ਤਰਜੀਹੀ ਸੇਵਾ"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;ਕੀ ਸਾਰੀਆਂ ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰਨਾ ਹੈ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ਪਾਸਵਰਡ, ਪਾਸਕੀਆਂ ਅਤੇ ਰੱਖਿਅਤ ਕੀਤੀ ਹੋਰ ਜਾਣਕਾਰੀ ਤੁਹਾਡੇ ਵੱਲੋਂ ਸਾਈਨ-ਇਨ ਕਰਨ \'ਤੇ ਆਟੋਫਿਲ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਰਹਿਣਗੀਆਂ"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;ਆਪਣੀ ਤਰਜੀਹੀ ਸੇਵਾ ਨੂੰ ਬਦਲ ਕੇ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; \'ਤੇ ਕਰੋ। ਨਵੇਂ ਪਾਸਵਰਡਾਂ, ਪਾਸਕੀਆਂ ਅਤੇ ਹੋਰ ਜਾਣਕਾਰੀ ਨੂੰ ਹੁਣ ਤੋਂ ਇੱਥੇ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾਵੇਗਾ। &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ਵੱਲੋਂ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਖ ਰਹੀ ਸਮੱਗਰੀ ਦੇ ਆਧਾਰ \'ਤੇ ਇਹ ਨਿਰਧਾਰਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿ ਕਿਹੜੀ ਜਾਣਕਾਰੀ ਆਟੋਫਿਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"ਕੀ %1$s ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ਬੰਦ ਕਰੋ"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"ਬਦਲੋ"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"ਤੁਸੀਂ ਸਿਰਫ਼ 5 ਸੇਵਾਵਾਂ ਨੂੰ ਹੀ ਚਾਲੂ ਰੱਖ ਸਕਦੇ ਹੋ"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"ਕੋਈ ਹੋਰ ਸੇਵਾ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਘੱਟੋ-ਘੱਟ 1 ਸੇਵਾ ਨੂੰ ਬੰਦ ਕਰੋ"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ਇਹ ਨਿਰਧਾਰਿਤ ਕਰਨ ਲਈ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਮੌਜੂਦ ਜਾਣਕਾਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਕਿ ਕਿਹੜੀ ਜਾਣਕਾਰੀ ਨੂੰ ਆਟੋਫਿਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"</string>
@@ -4599,7 +4615,7 @@
     <string name="dsds_notification_after_suw_text" msgid="1287357774676361084">"ਆਪਣਾ ਸਰਗਰਮ ਸਿਮ ਚੁਣੋ ਜਾਂ ਇੱਕੋ ਵੇਲੇ 2 ਸਿਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
     <string name="choose_sim_title" msgid="66509047151583877">"ਵਰਤਣ ਲਈ ਸਿਮ ਚੁਣੋ"</string>
     <string name="choose_sim_text" msgid="8992163497852069924">"{count,plural, =1{ਇਸ ਡੀਵਾਈਸ \'ਤੇ 1 ਸਿਮ ਉਪਲਬਧ ਹੈ, ਪਰ ਇੱਕ ਵਾਰ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਹੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ}=2{ਇਸ ਡੀਵਾਈਸ \'ਤੇ 2 ਸਿਮ ਉਪਲਬਧ ਹਨ, ਪਰ ਇੱਕ ਵਾਰ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਹੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ}one{ਇਸ ਡੀਵਾਈਸ \'ਤੇ # ਸਿਮ ਉਪਲਬਧ ਹੈ, ਪਰ ਇੱਕ ਵਾਰ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਹੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ}other{ਇਸ ਡੀਵਾਈਸ \'ਤੇ # ਸਿਮ ਉਪਲਬਧ ਹਨ, ਪਰ ਇੱਕ ਵਾਰ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਹੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ}}"</string>
-    <string name="choose_sim_activating" msgid="6485547671356386998">"<xliff:g id="ELLIPSIS">…</xliff:g> ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <string name="choose_sim_activating" msgid="6485547671356386998">"ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
     <string name="choose_sim_could_not_activate" msgid="866488735834045525">"ਫ਼ਿਲਹਾਲ ਇਸ ਸਿਮ ਨੂੰ ਚਾਲੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
     <string name="switch_sim_dialog_title" msgid="5407316878973237773">"ਕੀ <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ਨੂੰ ਵਰਤਣਾ ਹੈ?"</string>
     <string name="switch_sim_dialog_text" msgid="7530186862171635464">"ਮੋਬਾਈਲ ਡਾਟਾ, ਕਾਲਾਂ ਅਤੇ SMS ਲਈ <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ਨੂੰ ਵਰਤਿਆ ਜਾਵੇਗਾ।"</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"ਪਲੇਅਰ ਲੁਕਾਓ"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"ਪਲੇਅਰ ਦਿਖਾਓ"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"ਮੀਡੀਆ"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"ਕੈਮਰਾ ਸਾਫ਼ਟਵੇਅਰ ਐਕਸਟੈਂਸ਼ਨਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"ਉੱਨਤ ਕੈਮਰਾ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਸਾਫ਼ਟਵੇਅਰ ਲਾਗੂਕਰਨ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਅੱਖਾਂ ਰਹਿਤ ਵੀਡੀਓਗ੍ਰਾਫ਼ੀ।"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"ਬਲੂਟੁੱਥ ਚਾਲੂ ਹੋਵੇਗਾ"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"ਇੰਟਰਨੈੱਟ"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"ਸਿਮ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index b4882ec..48bb8dc 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Sposoby odblokowywania"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Taka sama jak blokada ekranu urządzenia"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Wybrać nową blokadę dla przestrzeni prywatnej?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Blokowanie automatyczne"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Automatyczne blokowanie przestrzeni prywatnej"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Automatyczne blokowanie przestrzeni prywatnej"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Możesz automatycznie zablokować swoją przestrzeń prywatną przy braku aktywności urządzenia przez określony czas"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Przy każdym zablokowaniu urządzenia"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Po 5 minutach braku aktywności"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Wzór"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"Kod PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Hasło"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Usunąć wszystkie metody odblokowania urządzenia?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Wyłączyć ochronę profilu?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Wzór ochroni Twój telefon, jeśli zostanie zgubiony lub skradziony"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Wzór ochroni Twój telefon, jeśli zostanie zgubiony lub skradziony.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Model odcisku palca zapisany na telefonie zostanie usunięty. Twój model twarzy również zostanie trwale i bezpiecznie usunięty. Uwierzytelnianie się w aplikacjach skanem twarzy i odciskiem palca nie będzie możliwe."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Jeśli telefon zostanie zgubiony lub skradziony, ochroni go kod PIN."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Zapisane dane, takie jak kod PIN, zostaną utracone.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karty skonfigurowane do płatności zbliżeniowych zostaną usunięte.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portfele i inne aplikacje wymagające odblokowania urządzenia mogą nie działać prawidłowo."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Jeśli telefon zostanie zgubiony lub skradziony, ochroni go kod PIN.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Model odcisku palca zapisany na telefonie również zostanie usunięty. Uwierzytelnianie się w aplikacjach odciskiem palca nie będzie możliwe."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Zapisane dane, takie jak kod PIN i odcisk palca, zostaną utracone.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karty skonfigurowane do płatności zbliżeniowych zostaną usunięte.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portfele i inne aplikacje wymagające odblokowania urządzenia mogą nie działać prawidłowo."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Jeśli telefon zostanie zgubiony lub skradziony, ochroni go kod PIN.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Twój model twarzy również zostanie trwale i bezpiecznie usunięty. Uwierzytelnianie się w aplikacjach skanem twarzy nie będzie możliwe."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Zapisane dane, takie jak kod PIN i model twarzy, zostaną utracone.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karty skonfigurowane do płatności zbliżeniowych zostaną usunięte.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portfele i inne aplikacje wymagające odblokowania urządzenia mogą nie działać prawidłowo."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Jeśli telefon zostanie zgubiony lub skradziony, ochroni go kod PIN.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Model odcisku palca zapisany na telefonie zostanie usunięty. Twój model twarzy również zostanie trwale i bezpiecznie usunięty. Uwierzytelnianie się w aplikacjach skanem twarzy i odciskiem palca nie będzie możliwe."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Zapisane dane, takie jak kod PIN, model twarzy i odcisk palca, zostaną utracone.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karty skonfigurowane do płatności zbliżeniowych zostaną usunięte.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portfele i inne aplikacje wymagające odblokowania urządzenia mogą nie działać prawidłowo."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Hasło ochroni Twój telefon, jeśli zostanie zgubiony lub skradziony"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Hasło ochroni Twój telefon, jeśli zostanie zgubiony lub skradziony.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Kliknij prawy dolny róg touchpada, aby wyświetlić więcej opcji"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Szybkość wskaźnika"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Poznaj gesty na touchpada"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Przejście na ekran główny"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Przesuń 3 palcami w górę w dowolnym miejscu na touchpadzie"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Przechodzenie wstecz"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ta aplikacja może wykorzystywać baterię, działając w tle. Może to powodować szybsze wyczerpywanie baterii."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Usuń"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Anuluj"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Ładuj do pełna"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Sprawdź akcesoria do ładowania"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Więcej informacji o ładowaniu niezgodną ładowarką"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Menedżer baterii"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatyczne, uzupełnianie, autouzupełnianie, dane, klucz dostępu, hasło"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Zmień"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Otwórz"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nie wybrano"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Sprawdź, czy ta aplikacja jest zaufana&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Autouzupełnianie Google&gt;%1$s&lt;/xliff:g&gt; na podstawie zawartości ekranu określa, co można uzupełnić automatycznie."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Używać aplikacji &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Od tej pory w tym miejscu będą zachowywane nowe hasła, klucze i inne informacje. Aplikacja &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; używa treści wyświetlanych na ekranie do określania, co można uzupełnić automatycznie."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Preferowana usługa dla haseł, kluczy dostępu i autouzupełniania"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Wyłączyć wszystkie usługi?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Hasła, klucze dostępu i inne zapisane informacje nie będą mogły być automatycznie uzupełniane podczas logowania"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Zmienić preferowaną aplikację na &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nowe hasła, klucze dostępu i inne informacje będą od teraz zapisywane tutaj. Aplikacja &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; używa treści wyświetlanych na ekranie do określania, co można uzupełnić automatycznie."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Użyć usługi %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Wyłącz"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Zmień"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Możesz mieć włączonych jednocześnie tylko 5 usług"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Wyłącz co najmniej 1 usługę, aby dodać kolejną"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"Usługa %1$s używa treści wyświetlanych na ekranie do określania, co można uzupełnić automatycznie."</string>
@@ -4753,10 +4769,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ukryj odtwarzacz"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Pokazuj odtwarzacz"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"multimedia"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Zezwalanie na dostęp do rozszerzeń oprogramowania aparatu"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Umożliwia fabryczne wdrożenie w oprogramowaniu zaawansowanych funkcji aparatu, takich jak wideografia bezwzrokowa Eyes Free."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Zostanie włączony Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Karty SIM"</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 634ca52..9c48168 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Formas de desbloquear a tela"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Igual ao bloqueio de tela do dispositivo"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Escolher outro bloqueio para o espaço privado?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Bloquear automaticamente"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Bloquear o espaço privado automaticamente"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Bloquear o espaço privado automaticamente"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Você poderá bloquear seu espaço privado automaticamente se não usar o dispositivo por um período de tempo"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Sempre que o dispositivo for bloqueado"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Depois de cinco minutos de inatividade"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Padrão"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Senha"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Remover todos os tipos de desbloqueio de dispositivo?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Remover proteção de perfil?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Um padrão protege o smartphone em casos de roubo ou perda"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Um padrão protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>O modelo de impressão digital armazenado no dispositivo será excluído. Seu modelo de rosto também será excluído de maneira permanente e segura. Você não poderá usar seu rosto ou impressão digital para fazer a autenticação em apps."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Um PIN protege o smartphone em casos de roubo ou perda"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Você vai perder dados salvos, como o PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards configurados para pagamento por aproximação serão removidos.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Carteiras e outros apps que exigem o desbloqueio do dispositivo podem não funcionar corretamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Um PIN protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>O modelo de impressão digital armazenado no dispositivo também será excluído. Você não poderá usar sua impressão digital para fazer a autenticação em apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Você vai perder dados salvos, como o PIN e o modelo de impressão digital.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards configurados para pagamento por aproximação serão removidos.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Carteiras e outros apps que exigem o desbloqueio do dispositivo podem não funcionar corretamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Um PIN protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Seu modelo de rosto também será excluído de maneira permanente e segura. Você não poderá usar seu rosto para fazer a autenticação em apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Você vai perder dados salvos, como o PIN e o modelo de rosto.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards configurados para pagamento por aproximação serão removidos.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Carteiras e outros apps que exigem o desbloqueio do dispositivo podem não funcionar corretamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Um PIN protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>O modelo de impressão digital armazenado no dispositivo será excluído. Seu modelo de rosto também será excluído de maneira permanente e segura. Você não poderá usar seu rosto ou impressão digital para fazer a autenticação em apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Você vai perder dados salvos, como o PIN e os modelos de rosto e impressão digital.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards configurados para pagamento por aproximação serão removidos.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Carteiras e outros apps que exigem o desbloqueio do dispositivo podem não funcionar corretamente."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Uma senha protege o smartphone em casos de roubo ou perda"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Uma senha protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
 
@@ -1465,8 +1475,8 @@
     <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"Músicas"</li>\n<li>"Fotos"</li>\n<li>"Outros dados do usuário"</li></string>
     <string name="main_clear_desc_also_erases_esim" msgid="4553469876411831729"><li>"eSIMs"</li></string>
     <string name="main_clear_desc_no_cancel_mobile_plan" msgid="369883568059127035">\n\n"Essa ação não cancelará seu plano de serviços móveis."</string>
-    <string name="main_clear_final_desc" msgid="5800877928569039580">"Todas as informações pessoais e os apps transferidos por download serão excluídos. Não é possível desfazer essa ação."</string>
-    <string name="main_clear_final_desc_esim" msgid="6592404057237813989">"Todas as suas informações pessoais, inclusive apps e eSIMs transferidos por download, serão excluídas. Não é possível desfazer essa ação."</string>
+    <string name="main_clear_final_desc" msgid="5800877928569039580">"Todas as informações pessoais e os apps baixados serão excluídos. Não é possível desfazer essa ação."</string>
+    <string name="main_clear_final_desc_esim" msgid="6592404057237813989">"Todas as suas informações pessoais, inclusive apps e eSIMs baixados, serão excluídas. Não é possível desfazer essa ação."</string>
     <string name="main_clear_confirm_title" msgid="6577071819657853713">"Limpar todos os dados?"</string>
     <string name="main_clear_not_available" msgid="3433795327146684827">"A redefinição para a configuração original não está disponível para este usuário"</string>
     <string name="main_clear_progress_title" msgid="7239741132015617719">"Limpando"</string>
@@ -1757,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"Falha ao arquivar"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> arquivado"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"Falha na restauração"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"Restaurando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"Restaurando app: <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"Outra migração já está em andamento."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"Não há espaço de armazenamento suficiente."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"O app não existe."</string>
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Toque no canto inferior direito do touchpad para mais opções"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocidade do cursor"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Aprender gestos do touchpad"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Ir para a tela inicial"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Deslize para cima com três dedos em qualquer lugar do touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Voltar"</string>
@@ -1969,7 +1983,7 @@
     <string name="interaction_control_category_title" msgid="2696474616743882372">"Controles de interação"</string>
     <string name="accessibility_tap_assistance_title" msgid="1058913033421048284">"Controles de marcação de tempo"</string>
     <string name="accessibility_system_controls_title" msgid="6403287349518987624">"Controles do sistema"</string>
-    <string name="user_installed_services_category_title" msgid="2639470729311439731">"Apps transferidos por download"</string>
+    <string name="user_installed_services_category_title" msgid="2639470729311439731">"Apps baixados"</string>
     <string name="experimental_category_title" msgid="898904396646344152">"Experimentais"</string>
     <string name="feature_flags_dashboard_title" msgid="348990373716658289">"Sinalizações de recursos"</string>
     <string name="bt_hci_snoop_log_filters_dashboard_title" msgid="401330708633716596">"Filtro do registro de espionagem de HCI Bluetooth"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Esse app poderá usar a bateria em segundo plano. É possível que sua bateria acabe antes do esperado."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Remover"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancelar"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Carregar totalmente"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Verifique o acessório de carregamento"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Saiba mais sobre a incompatibilidade de carregamento"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Gerenciador de bateria"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automático, preenchimento, preenchimento automático, dados, chave de acesso, senha"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Mudar"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Abrir"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nenhum selecionado"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Você precisa confiar nesse app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=O Preenchimento automático do Google&gt;%1$s&lt;/xliff:g&gt; usa o que está na sua tela para determinar o que pode ser preenchido automaticamente."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Usar &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Senhas, chaves de acesso e outras informações novas serão salvas aqui a partir de agora. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pode usar o que aparece na tela para determinar o que pode ser preenchido automaticamente."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Serviço preferido para senhas, chaves de acesso e preenchimento automático"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Desativar todos os serviços?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Novas senhas, chaves de acesso e outras informações serão salvas aqui a partir de agora."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Mude seu serviço favorito para &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Novas senhas, chaves de acesso e outras informações serão salvas aqui a partir de agora. O &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pode usar o que aparece na tela para determinar o que pode ser preenchido automaticamente"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Usar %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Desativar"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Mudar"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Só é possível ter 5 serviços ativados"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Desative pelo menos 1 serviço para adicionar outro"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s usa o que aparece na tela para determinar o que pode ser preenchido automaticamente."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ocultar player"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Mostrar player"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"mídia"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Permitir extensões de softwares da câmera"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Permite a implementação de softwares padrão com recursos avançados de câmera, como a videografia de acessibilidade."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"O Bluetooth será ativado"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Chips"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index e476760..ec8743c 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Formas de desbloquear"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"O mesmo que o bloqueio de ecrã do dispositivo"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Escolher um novo bloqueio para o espaço privado?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Bloquear automaticamente"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Bloqueie automaticamente o espaço privado"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Bloqueie automaticamente o espaço privado"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Pode bloquear automaticamente o seu espaço privado se não tiver usado o dispositivo durante um determinado período"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Sempre que o dispositivo é bloqueado"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Após 5 minutos de inatividade"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Toque no canto inferior direito do touchpad para mais opções"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocidade do ponteiro"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Aprender gestos do touchpad"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Aceder ao ecrã principal"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Deslize para cima com 3 dedos em qualquer parte do touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Voltar"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Esta aplicação poderá utilizar a bateria em segundo plano e, por conseguinte, pode ficar sem bateria mais cedo do que o esperado."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Remover"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancelar"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Carregar até carga completa"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Verificar acessório de carregamento"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Saiba mais sobre o carregamento com um carregador incompatível"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automático, preenchimento, preenchimento automático, dados, chave de acesso, palavra-passe"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Alterar"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Abrir"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nenhuma seleção"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Certifique-se de que confia nesta app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=O Preenchimento automático do Google&gt;%1$s&lt;/xliff:g&gt; utiliza o que está no ecrã para determinar o que pode ser preenchido automaticamente."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use a app &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Entre outras informações, a partir de agora, as palavras-passe e as chaves de acesso novas vão ser guardadas aqui. A app &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pode usar o que está no ecrã para determinar o que pode ser preenchido automaticamente."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Serviço preferido para palavras-passe, chaves de acesso e preenchimento automático"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Desativar todos os serviços?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; As palavras-passe, as chaves de acesso e outras informações guardadas não vão estar disponíveis para preenchimento automático quando iniciar sessão"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Altere o seu serviço preferido para a app &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Entre outras informações, a partir de agora, as palavras-passe e as chaves de acesso novas vão ser guardadas aqui. A app &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pode usar o que está no ecrã para determinar o que pode ser preenchido automaticamente"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Usar o %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Desativar"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Alterar"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Só pode ter 5 serviços ativados"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Desative pelo menos 1 serviço para adicionar outro"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"O %1$s usa o que está no ecrã para determinar o que pode ser preenchido automaticamente."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ocultar leitor"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Mostrar leitor"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"multimédia"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Permitir extensões do software da câmara"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Permite a implementação do software predefinido de funcionalidades de câmara avançadas, como a videografia sem olhar."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"O Bluetooth será ativado"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMs"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 634ca52..9c48168 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Formas de desbloquear a tela"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Igual ao bloqueio de tela do dispositivo"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Escolher outro bloqueio para o espaço privado?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Bloquear automaticamente"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Bloquear o espaço privado automaticamente"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Bloquear o espaço privado automaticamente"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Você poderá bloquear seu espaço privado automaticamente se não usar o dispositivo por um período de tempo"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Sempre que o dispositivo for bloqueado"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Depois de cinco minutos de inatividade"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Padrão"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Senha"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Remover todos os tipos de desbloqueio de dispositivo?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Remover proteção de perfil?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Um padrão protege o smartphone em casos de roubo ou perda"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Um padrão protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>O modelo de impressão digital armazenado no dispositivo será excluído. Seu modelo de rosto também será excluído de maneira permanente e segura. Você não poderá usar seu rosto ou impressão digital para fazer a autenticação em apps."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Um PIN protege o smartphone em casos de roubo ou perda"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Você vai perder dados salvos, como o PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards configurados para pagamento por aproximação serão removidos.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Carteiras e outros apps que exigem o desbloqueio do dispositivo podem não funcionar corretamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Um PIN protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>O modelo de impressão digital armazenado no dispositivo também será excluído. Você não poderá usar sua impressão digital para fazer a autenticação em apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Você vai perder dados salvos, como o PIN e o modelo de impressão digital.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards configurados para pagamento por aproximação serão removidos.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Carteiras e outros apps que exigem o desbloqueio do dispositivo podem não funcionar corretamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Um PIN protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Seu modelo de rosto também será excluído de maneira permanente e segura. Você não poderá usar seu rosto para fazer a autenticação em apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Você vai perder dados salvos, como o PIN e o modelo de rosto.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards configurados para pagamento por aproximação serão removidos.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Carteiras e outros apps que exigem o desbloqueio do dispositivo podem não funcionar corretamente."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Um PIN protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>O modelo de impressão digital armazenado no dispositivo será excluído. Seu modelo de rosto também será excluído de maneira permanente e segura. Você não poderá usar seu rosto ou impressão digital para fazer a autenticação em apps."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Você vai perder dados salvos, como o PIN e os modelos de rosto e impressão digital.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cards configurados para pagamento por aproximação serão removidos.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Carteiras e outros apps que exigem o desbloqueio do dispositivo podem não funcionar corretamente."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Uma senha protege o smartphone em casos de roubo ou perda"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Uma senha protege o smartphone em casos de roubo ou perda.<xliff:g id="EMPTY_LINE">
 
@@ -1465,8 +1475,8 @@
     <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"Músicas"</li>\n<li>"Fotos"</li>\n<li>"Outros dados do usuário"</li></string>
     <string name="main_clear_desc_also_erases_esim" msgid="4553469876411831729"><li>"eSIMs"</li></string>
     <string name="main_clear_desc_no_cancel_mobile_plan" msgid="369883568059127035">\n\n"Essa ação não cancelará seu plano de serviços móveis."</string>
-    <string name="main_clear_final_desc" msgid="5800877928569039580">"Todas as informações pessoais e os apps transferidos por download serão excluídos. Não é possível desfazer essa ação."</string>
-    <string name="main_clear_final_desc_esim" msgid="6592404057237813989">"Todas as suas informações pessoais, inclusive apps e eSIMs transferidos por download, serão excluídas. Não é possível desfazer essa ação."</string>
+    <string name="main_clear_final_desc" msgid="5800877928569039580">"Todas as informações pessoais e os apps baixados serão excluídos. Não é possível desfazer essa ação."</string>
+    <string name="main_clear_final_desc_esim" msgid="6592404057237813989">"Todas as suas informações pessoais, inclusive apps e eSIMs baixados, serão excluídas. Não é possível desfazer essa ação."</string>
     <string name="main_clear_confirm_title" msgid="6577071819657853713">"Limpar todos os dados?"</string>
     <string name="main_clear_not_available" msgid="3433795327146684827">"A redefinição para a configuração original não está disponível para este usuário"</string>
     <string name="main_clear_progress_title" msgid="7239741132015617719">"Limpando"</string>
@@ -1757,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"Falha ao arquivar"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> arquivado"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"Falha na restauração"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"Restaurando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"Restaurando app: <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"Outra migração já está em andamento."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"Não há espaço de armazenamento suficiente."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"O app não existe."</string>
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Toque no canto inferior direito do touchpad para mais opções"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Velocidade do cursor"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Aprender gestos do touchpad"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Ir para a tela inicial"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Deslize para cima com três dedos em qualquer lugar do touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Voltar"</string>
@@ -1969,7 +1983,7 @@
     <string name="interaction_control_category_title" msgid="2696474616743882372">"Controles de interação"</string>
     <string name="accessibility_tap_assistance_title" msgid="1058913033421048284">"Controles de marcação de tempo"</string>
     <string name="accessibility_system_controls_title" msgid="6403287349518987624">"Controles do sistema"</string>
-    <string name="user_installed_services_category_title" msgid="2639470729311439731">"Apps transferidos por download"</string>
+    <string name="user_installed_services_category_title" msgid="2639470729311439731">"Apps baixados"</string>
     <string name="experimental_category_title" msgid="898904396646344152">"Experimentais"</string>
     <string name="feature_flags_dashboard_title" msgid="348990373716658289">"Sinalizações de recursos"</string>
     <string name="bt_hci_snoop_log_filters_dashboard_title" msgid="401330708633716596">"Filtro do registro de espionagem de HCI Bluetooth"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Esse app poderá usar a bateria em segundo plano. É possível que sua bateria acabe antes do esperado."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Remover"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Cancelar"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Carregar totalmente"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Verifique o acessório de carregamento"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Saiba mais sobre a incompatibilidade de carregamento"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Gerenciador de bateria"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automático, preenchimento, preenchimento automático, dados, chave de acesso, senha"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Mudar"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Abrir"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nenhum selecionado"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Você precisa confiar nesse app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=O Preenchimento automático do Google&gt;%1$s&lt;/xliff:g&gt; usa o que está na sua tela para determinar o que pode ser preenchido automaticamente."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Usar &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Senhas, chaves de acesso e outras informações novas serão salvas aqui a partir de agora. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pode usar o que aparece na tela para determinar o que pode ser preenchido automaticamente."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Serviço preferido para senhas, chaves de acesso e preenchimento automático"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Desativar todos os serviços?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Novas senhas, chaves de acesso e outras informações serão salvas aqui a partir de agora."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Mude seu serviço favorito para &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Novas senhas, chaves de acesso e outras informações serão salvas aqui a partir de agora. O &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; pode usar o que aparece na tela para determinar o que pode ser preenchido automaticamente"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Usar %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Desativar"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Mudar"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Só é possível ter 5 serviços ativados"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Desative pelo menos 1 serviço para adicionar outro"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s usa o que aparece na tela para determinar o que pode ser preenchido automaticamente."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ocultar player"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Mostrar player"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"mídia"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Permitir extensões de softwares da câmera"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Permite a implementação de softwares padrão com recursos avançados de câmera, como a videografia de acessibilidade."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"O Bluetooth será ativado"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Chips"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 6673556..c477a9a 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Moduri de deblocare"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Aceeași ca blocarea ecranului dispozitivului"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Alegi un aspect nou pentru spațiul privat?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Blochează automat"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Blochează automat spațiul privat"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Blochează automat spațiul privat"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Poți bloca automat spațiul privat dacă nu ai folosit dispozitivul o perioadă de timp"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"La fiecare blocare a dispozitivului"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"După 5 minute de inactivitate"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Model"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Parolă"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Elimini toate tipurile de deblocare a dispozitivului?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Elimini protecția profilului?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Un model îți protejează telefonul dacă este pierdut sau furat"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Un model îți protejează telefonul dacă este pierdut sau furat.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Această funcție șterge modelul cu amprentă stocat pe dispozitiv. În plus, modelul facial va fi șters definitiv și în siguranță. Nu vei putea să folosești fața sau amprenta pentru autentificare în aplicații."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Un PIN îți protejează telefonul dacă este pierdut sau furat"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Vei pierde datele salvate, precum codul PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cardurile configurate pentru plată contactless se vor elimina.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portofelele și alte aplicații care necesită deblocarea dispozitivului pot să nu funcționeze corect."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Un PIN îți protejează telefonul dacă este pierdut sau furat.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>În plus, această funcție șterge modelul cu amprentă stocat pe dispozitiv. Nu vei putea să-ți folosești amprenta pentru autentificare în aplicații."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Vei pierde datele salvate, precum codul PIN și modelul de amprentă digitală.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cardurile configurate pentru plată contactless se vor elimina.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portofelele și alte aplicații care necesită deblocarea dispozitivului pot să nu funcționeze corect."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Un PIN îți protejează telefonul dacă este pierdut sau furat.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>În plus, modelul facial va fi șters definitiv și în siguranță. Nu vei putea să-ți folosești fața pentru autentificare în aplicații."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Vei pierde datele salvate, precum codul PIN și modelul facial.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cardurile configurate pentru plată contactless se vor elimina.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portofelele și alte aplicații care necesită deblocarea dispozitivului pot să nu funcționeze corect."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Un PIN îți protejează telefonul dacă este pierdut sau furat.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Această funcție șterge modelul cu amprentă stocat pe dispozitiv. În plus, modelul facial va fi șters definitiv și în siguranță. Nu vei putea să folosești fața sau amprenta pentru autentificare în aplicații."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Vei pierde datele salvate, precum codul PIN, modelul facial și cel de amprentă digitală.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Cardurile configurate pentru plată contactless se vor elimina.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portofelele și alte aplicații care necesită deblocarea dispozitivului pot să nu funcționeze corect."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"O parolă îți protejează telefonul dacă este pierdut sau furat"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"O parolă îți protejează telefonul dacă este pierdut sau furat.<xliff:g id="EMPTY_LINE">
 
@@ -1757,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"Arhivarea nu a reușit"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"S-a arhivat <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"Restabilirea nu a reușit"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"Se restabilește <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"Restabilire <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"Altă migrare este deja în desfășurare."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"Nu există suficient spațiu de stocare."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"Aplicația nu există."</string>
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Atinge colțul din dreapta jos al touchpadului pentru alte opțiuni"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Viteza indicatorului"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Învață gesturi pentru touchpad"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Înapoi la ecranul de pornire"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Glisează în sus cu trei degete oriunde pe touchpad"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Înapoi"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Această aplicație va putea utiliza bateria în fundal. Bateria se poate descărca mai repede decât vă așteptați."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Elimină"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Anulează"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Încarcă până la 100 %%"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Verifică accesoriul de încărcare"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Află mai multe despre încărcarea cu un adaptor incompatibil"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, completare, completare automată, date, cheie de acces, parolă"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Modifică"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Deschide"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Niciuna selectată"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Asigură-te că ai încredere în această aplicație&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Completarea automată Google&gt;%1$s&lt;/xliff:g&gt; folosește conținutul de pe ecran pentru a stabili ce se poate completa automat."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Folosește &lt;xliff:g id=app_name example=Furnizorul&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Noile parole, chei de acces și alte informații se vor salva aici de acum înainte. &lt;xliff:g id=app_name example=Furnizorul&gt;%1$s&lt;/xliff:g&gt; poate folosi ce se află pe ecran pentru a stabili ce se poate completa automat."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Serviciul preferat pentru parole, chei de acces și completare automată"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Dezactivezi toate serviciile?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Parolele, cheile de acces și alte informații salvate nu vor fi disponibile pentru completare automată când te conectezi"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Schimbă serviciul preferat la &lt;xliff:g id=app_name example=Furnizor&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Noile parole, chei de acces și alte informații se vor salva aici de acum încolo. &lt;xliff:g id=app_name example=Furnizorul&gt;%1$s&lt;/xliff:g&gt; poate folosi ce se află pe ecran pentru a stabili ce se poate completa automat"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Folosești %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Dezactivează"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Modifică"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Poți avea doar cinci servicii activate"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Dezactivează cel puțin un serviciu ca să adaugi altul"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s folosește elementele de pe ecran ca să afle ce se poate completa automat."</string>
@@ -4752,10 +4768,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ascunde playerul"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Afișează playerul"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Permite extensiile de software pentru camera foto"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Activează implementarea software prestabilită a funcțiilor avansate pentru camera foto, precum videografia Eyes Free."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth se va activa"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Carduri SIM"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index e3f0ac3..0c00f36 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Способы разблокировки"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Тот же способ блокировки, что и для экрана устройства"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Изменить способ блокировки личного пространства?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Блокировать автоматически"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Автоматическая блокировка личного пространства"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Автоматически блокировать личное пространство"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Можно сделать так, чтобы личное пространство автоматически блокировалось, если вы не используете устройство какое-то время."</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Каждый раз при блокировке устройства"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Через 5 минут бездействия"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Графический ключ"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN-код"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Пароль"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Отключить все способы разблокировки устройства?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Отключить защиту профиля?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Графический ключ защитит данные на телефоне в случае его потери или кражи."</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Графический ключ защитит данные на телефоне в случае его потери или кражи.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Модель отпечатка пальца, сохраненная на устройстве, будет удалена. Модель вашего лица также будет безвозвратно удалена. Вы не сможете пользоваться фейсконтролем и отпечатком пальца для аутентификации в приложениях."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN-код защитит данные на телефоне в случае его потери или кражи."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"PIN-код и другие сохраненные данные будут потеряны.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Карты, установленные для бесконтактной оплаты, будут удалены.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Кошельки и другие приложения, для использования которых нужна разблокировка устройства, могут работать неправильно."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN-код защитит данные на телефоне в случае его потери или кражи.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Модель отпечатка пальца, сохраненная на устройстве, также будет удалена. Вы не сможете пользоваться отпечатком пальца для аутентификации в приложениях."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"PIN-код, модель отпечатка и другие сохраненные данные будут потеряны.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Карты, установленные для бесконтактной оплаты, будут удалены.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Кошельки и другие приложения, для использования которых нужна разблокировка устройства, могут работать неправильно."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN-код защитит данные на телефоне в случае его потери или кражи.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Модель вашего лица также будет безвозвратно удалена. Вы не сможете пользоваться фейсконтролем для аутентификации в приложениях."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"PIN-код, модель лица и другие сохраненные данные будут потеряны.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Карты, установленные для бесконтактной оплаты, будут удалены.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Кошельки и другие приложения, для использования которых нужна разблокировка устройства, могут работать неправильно."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN-код защитит данные на телефоне в случае его потери или кражи.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Модель отпечатка пальца, сохраненная на устройстве, будет удалена. Модель вашего лица также будет безвозвратно удалена. Вы не сможете пользоваться фейсконтролем и отпечатком пальца для аутентификации в приложениях."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"PIN-код, модели лица и отпечатка, а также другие сохраненные данные будут потеряны.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Карты, установленные для бесконтактной оплаты, будут удалены.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Кошельки и другие приложения, для использования которых нужна разблокировка устройства, могут работать неправильно."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Пароль защитит данные на телефоне в случае его потери или кражи."</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Пароль защитит данные на телефоне в случае его потери или кражи.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Показывать варианты при нажатии в правом нижнем углу"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Скорость указателя"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Узнать о жестах на сенсорной панели"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Возврат на главный экран"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Проведите по сенсорной панели тремя пальцами вверх."</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Назад"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Это приложение сможет потреблять энергию в фоновом режиме. Расход заряда батареи будет выше ожидаемого."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Удалить"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Отмена"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Зарядить полностью"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Проверьте зарядное устройство"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Подробнее об использовании несовместимых зарядных устройств"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"авто, заполнение, автозаполнение, данные, ключ доступа, пароль"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Изменить"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Открыть"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ничего не выбрано"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Подтвердите, что вы доверяете этому приложению&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; анализирует содержимое экрана и находит поля, которые можно заполнить автоматически."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Использовать приложение \"&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;\"?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; С этого момента в нем будут сохраняться новые пароли, ключи доступа и другие данные. Приложение \"&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;\" может анализировать содержимое экрана и находить поля, для которых доступно автозаполнение."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Предпочтительный сервис для хранения паролей, ключей доступа и данных автозаполнения"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Отключить все сервисы?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;Пароли, ключи доступа и другая сохраненная информация не будут подставляться при входе."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Сделать сервис \"&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;\" предпочтительным?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;Новые пароли, ключи доступа и другие данные будут сохраняться в нем. Приложение \"&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;\" может анализировать содержимое экрана, чтобы находить поля, для которых доступно автозаполнение."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Использовать %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Отключить"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Изменить"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Можно указать не более пяти сервисов"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Чтобы добавить сервис, отключите хотя бы один из уже выбранных."</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s анализирует содержимое экрана и находит поля, которые можно заполнить автоматически."</string>
@@ -4753,10 +4769,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Скрывать проигрыватель"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Показывать проигрыватель"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"Медиа"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Разрешить использовать расширения ПО камеры"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Включить стандартную программную реализацию продвинутых функций камеры, позволяющих, например, записывать видео не глядя на экран"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Будет включен Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Интернет"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-карты"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 97f59db..97ec57b 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"අගුළු හැරීමට ක්‍රම"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"උපාංග තිර අගුලට සමාන"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"පුද්ගලික අවකාශය සඳහා නව අගුලක් තෝරා ගන්නද?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ස්වයංක්‍රීයව අගුළු දමන්න"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"පෞද්ගලික ඉඩ ස්වයංක්‍රීයව අගුළු දමන්න"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"පෞද්ගලික ඉඩ ස්වයංක්‍රීයව අගුළු දමන්න"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"ඔබ යම් කාලයක් සඳහා ඔබේ උපාංගය භාවිතා කර නොමැති නම් ඔබට ඔබේ පෞද්ගලික ඉඩ ස්වයංක්‍රීයව අගුළු දැමිය හැක"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"උපාංගය අගුළු දමන සෑම අවස්ථාවකම"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"මිනිත්තු 5ක් අක්‍රිය වීමෙන් පසුව"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"රටාව"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"මුරපදය"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"සියලු වර්ගවල උපාංග අගුලු හැරීම ඉවත් කරන්න ද?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"පැතිකඩ ආරක්ෂාව ඉවත් කරන්නද?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"රටාවක් ඔබගේ දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"රටාවක් ඔබගේ දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>මෙය ඔබගේ උපාංගයේ ගබඩා කර ඇති ඇඟිලි සලකුණු ආකෘතිය මකයි. ඔබගේ මුහුණු ආකෘතියද ස්ථිරව සහ ආරක්ෂිතව මකනු ඇත. ඔබට යෙදුම්වල සත්‍යාපනය සඳහා ඔබගේ මුහුණ හෝ ඇඟිලි සලකුණ භාවිත කළ නොහැකි වනු ඇත."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN එකක් ඔබගේ දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"ඔබට ඔබේ රහස් අංකය වැනි සුරැකි දත්ත අහිමි වෙයි.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>ගෙවීමට තට්ටු කිරීමට සකසා ඇති කාඩ්පත් ඉවත් කරනු ලැබේ.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>උපාංග අගුලු හැරීම අවශ්‍ය මුදල් පසුම්බි සහ වෙනත් යෙදුම් නිසි ලෙස ක්‍රියා නොකරයි."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN එකක් ඔබගේ දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>මෙය ඔබගේ උපාංගයේ ගබඩා කර ඇති ඇඟිලි සලකුණු ආකෘතියද මකයි. ඔබට යෙදුම්වල සත්‍යාපනය සඳහා ඔබගේ ඇඟිලි සලකුණ භාවිත කළ නොහැකි වනු ඇත."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"ඔබට ඔබේ රහස් අංකය සහ ඇඟිලි සලකුණු මාදිලිය වැනි සුරැකි දත්ත අහිමි වෙයි.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>ගෙවීමට තට්ටු කිරීමට සකසා ඇති කාඩ්පත් ඉවත් කරනු ලැබේ.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>උපාංග අගුලු හැරීම අවශ්‍ය මුදල් පසුම්බි සහ වෙනත් යෙදුම් නිසි ලෙස ක්‍රියා නොකරයි."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN එකක් ඔබගේ දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>ඔබගේ මුහුණු ආකෘතියද ස්ථිරව හා ආරක්ෂිතව මකනු ඇත. ඔබට යෙදුම්වල සත්‍යාපනය සඳහා ඔබගේ මුහුණ භාවිත කළ නොහැකි වනු ඇත."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"ඔබට ඔබේ රහස් අංකය සහ මුහුණු මාදිලිය වැනි සුරැකි දත්ත අහිමි වෙයි.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>ගෙවීමට තට්ටු කිරීමට සකසා ඇති කාඩ්පත් ඉවත් කරනු ලැබේ.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>උපාංග අගුලු හැරීම අවශ්‍ය මුදල් පසුම්බි සහ වෙනත් යෙදුම් නිසි ලෙස ක්‍රියා නොකරයි."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN එකක් ඔබගේ දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>මෙය ඔබගේ උපාංගයේ ගබඩා කර ඇති ඇඟිලි සලකුණු ආකෘතිය මකයි. ඔබගේ මුහුණු ආකෘතියද ස්ථිරව සහ ආරක්ෂිතව මකනු ඇත. ඔබට යෙදුම්වල සත්‍යාපනය සඳහා ඔබගේ මුහුණ හෝ ඇඟිලි සලකුණ භාවිත කළ නොහැකි වනු ඇත."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"ඔබට ඔබේ රහස් අංකය, මුහුණු සහ ඇඟිලි සලකුණු මාදිලි වැනි සුරැකි දත්ත අහිමි වෙයි.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>ගෙවීමට තට්ටු කිරීමට සකසා ඇති කාඩ්පත් ඉවත් කරනු ලැබේ.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>උපාංග අගුලු හැරීම අවශ්‍ය මුදල් පසුම්බි සහ වෙනත් යෙදුම් නිසි ලෙස ක්‍රියා නොකරයි."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"මුරපදයක් ඔබගේ දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"මුරපදයක් ඔබගේ දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"තවත් විකල්ප සඳහා ස්පර්ශ පුවරුවේ පහළ දකුණු කෙළවර තට්ටු කරන්න"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"දර්ශක වේගය"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ස්පර්ශක පුවරු අභිනයන් ඉගෙන ගන්න"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"මුල් පිටුවට යන්න"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"ඔබේ ස්පර්ශපුවරුවේ ඕනෑම තැනක ඇඟිලි තුනකින් ඉහළට ස්වයිප් කරන්න"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ආපසු යන්න"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"මෙම යෙදුමට පසුබිමින් බැටරිය භාවිත කිරීමට හැකි වනු ඇත. ඔබේ බැටරිය බලාපොරොත්තු වනවාට වඩා ඉක්මනින් අවසන් විය හැකිය."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"ඉවත් කරන්න"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"අවලංගු කරන්න"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"පූර්ණ වීමට ආරෝපණය කරන්න"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ආරෝපණ ආයිත්තම පරීක්‍ෂා කරන්න"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"නොගැළපෙන ආරෝපණය පිළිබඳව තව දැන ගන්න"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"බැටරි කළමනාකරු"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ස්වයංක්‍රීය, පුරවන්න, ස්වයං පිරවුම, දත්ත, මුරයතුර, මුරපදය"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"වෙනස් කිරීම"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"විවෘත කරන්න"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"කිසිවක් තෝරා නැත"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ඔබ මෙම යෙදුම විශ්වාස කරන බව සහතික කර ගන්න&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ස්වයං පිරවිය හැකි දේවල් නිර්ණය කිරීමට ඔබේ තිරයෙහි ඇති දේවල් භාවිත කරයි."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; භාවිතා කරන්න ද?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; නව මුරපද, මුරයතුරු, සහ අනෙකුත් තතු මෙතැන් සිට මෙහි සුරකිනු ඇත. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ස්වයංව පිරවිය හැකි දේ තීරණය කිරීමට ඔබේ තිරයෙහි ඇති දේ භාවිතා කළ හැක."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"මුරපද, මුරයතුරු සහ ස්වයං පිරවීම සඳහා කැමති සේවාව"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;සියලු සේවා ක්‍රියා විරහිත කරන්න ද?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ඔබ පුරන විට මුරපද, මුරයතුරු, සහ සුරකින ලද අනෙකුත් තතු ස්වයංව පිරවීම සඳහා ලබා ගත නොහැක"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;ඔබ කැමති සේවාව &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; වෙත වෙනස් කරන්න ද?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; නව මුරපද, මුරයතුරු, සහ අනෙකුත් තතු මෙතැන් සිට මෙහි සුරකිනු ඇත. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ස්වයංව පිරවිය හැකි දේ තීරණය කිරීමට ඔබේ තිරයෙහි ඇති දේ භාවිතා කළ හැක"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s භාවිතා කරන්න ද?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ක්‍රියාවිරහිත කරන්න"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"වෙනස් කිරීම"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"ඔබට ක්‍රියාත්මක කළ හැක්කේ සේවා 5ක් පමණි"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"තවත් එක් කිරීමට අවම වශයෙන් 1 සේවාවක් ක්‍රියාවිරහිත කරන්න"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ස්වයං පිරවිය හැකි දේවල් නිර්ණය කිරීමට Google ඔබේ තිරයෙහි ඇති දේවල් භාවිතා කරයි."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"වාදකය සඟවන්න"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"වාදකය පෙන්වන්න"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"මාධ්‍ය"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"කැමරා මෘදුකාංග දිගුවලට ඉඩ දෙන්න"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"ඇස් රහිත වීඩියෝකරණය වැනි උසස් කැමරා විශේෂාංගවල පෙරනිමි මෘදුකාංග ක්‍රියාත්මක කිරීම සබල කරයි."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"බ්ලූටූත් ක්‍රියාත්මක වනු ඇත"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"අන්තර්ජාලය"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 3dcfeaa..4c1794b 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Spôsoby odomknutia"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Rovnaká ako zámka obrazovky zariadenia"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Chcete pre súkromný priestor vybrať novú zámku?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Automatické uzamykanie"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Automatické uzamykanie súkromného priestoru"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Automatické uzamykanie súkromného priestoru"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Ak ste zariadenie istý čas nepoužili, môžete si automaticky uzamknúť súkromný priestor"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Vždy, keď sa zariadenie uzamkne"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Po piatich minútach nečinnosti"</string>
@@ -571,7 +570,7 @@
     <string name="privatespace_hide_page_title" msgid="8417507414027827566">"Skrytie súkromného priestoru pri uzamknutí"</string>
     <string name="privatespace_hide_page_summary" msgid="5525422595477989312">"Ak nechcete, aby ostatní ľudia vedeli, že máte v zariadení súkromný priestor, môžete ho skryť v zozname aplikácií"</string>
     <string name="privatespace_access_header" msgid="6066826215718835041">"Prístup do súkromného priestoru, keď je skrytý"</string>
-    <string name="privatespace_search_description" msgid="3121043205513022357">"V zozname aplik. zadajte do vyhľ. panela „súkromný priestor“"</string>
+    <string name="privatespace_search_description" msgid="3121043205513022357">"V zozname aplikácií zadajte do vyhľadávacieho panela „súkromný priestor“"</string>
     <string name="privatespace_tap_tile_description" msgid="8346440188590931635">"Klepnite na kartu súkromného priestoru"</string>
     <string name="privatespace_unlock_description" msgid="3177710543121916413">"Odomknúť súkromný priestor"</string>
     <string name="privatespace_hide_off_summary" msgid="7227778747159633671">"Vypnuté"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Vzor"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Heslo"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Chcete odstrániť všetky typy odomknutia zariadenia?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Odstrániť ochranu profilu?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Vzor chráni váš telefón v prípade straty alebo krádeže"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Vzor chráni váš telefón v prípade straty alebo krádeže.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Táto akcia odstráni model odtlačku prsta uložený v zariadení. Váš model tváre bude tiež trvale a bezpečne odstránený. Pomocou tváre ani odtlačku prsta nebudete môcť overovať v aplikáciách."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN chráni váš telefón v prípade straty alebo krádeže"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Prídete o uložené údaje, napríklad PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karty nastavené na bezkontaktné platby budú odstránené.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Peňaženky a ďalšie aplikácie, ktoré vyžadujú odomknutie zariadenia, nemusia správne fungovať."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN chráni váš telefón v prípade straty alebo krádeže.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Táto akcia tiež odstráni model odtlačku prsta uložený v zariadení. Pomocou odtlačku prsta nebudete môcť overovať v aplikáciách."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Prídete o uložené údaje, ako sú PIN a model odtlačku prsta.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karty nastavené na bezkontaktné platby budú odstránené.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Peňaženky a ďalšie aplikácie, ktoré vyžadujú odomknutie zariadenia, nemusia správne fungovať."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN chráni váš telefón v prípade straty alebo krádeže.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Váš model tváre bude tiež trvale a bezpečne odstránený. Pomocou tváre nebudete môcť overovať v aplikáciách."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Prídete o uložené údaje, ako sú PIN a model tváre.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karty nastavené na bezkontaktné platby budú odstránené.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Peňaženky a ďalšie aplikácie, ktoré vyžadujú odomknutie zariadenia, nemusia správne fungovať."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN chráni váš telefón v prípade straty alebo krádeže.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Táto akcia odstráni model odtlačku prsta uložený v zariadení. Váš model tváre bude tiež trvale a bezpečne odstránený. Pomocou tváre ani odtlačku prsta nebudete môcť overovať v aplikáciách."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Prídete o uložené údaje, ako sú PIN a modely tváre a odtlačku prsta.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Karty nastavené na bezkontaktné platby budú odstránené.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Peňaženky a ďalšie aplikácie, ktoré vyžadujú odomknutie zariadenia, nemusia správne fungovať."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Heslo chráni váš telefón v prípade straty alebo krádeže"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Heslo chráni váš telefón v prípade straty alebo krádeže.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Viac zobrazíte klepnutím do pravého dolného rohu touchpadu"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Rýchlosť kurzora"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Naučiť sa gestá touchpadu"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Prechod na plochu"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Kdekoľvek na touchpade potiahnite troma prstami nahor"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Prejdenie späť"</string>
@@ -1902,7 +1916,7 @@
     <string name="modifier_keys_done" msgid="8196199314913909700">"Hotovo"</string>
     <string name="modifier_keys_cancel" msgid="7136520252570826772">"Zrušiť"</string>
     <string name="modifier_keys_reset" msgid="551170906710422041">"Resetovať"</string>
-    <string name="modifier_keys_picker_title" msgid="244545904150587851">"Vyberte kláves modifikátora"</string>
+    <string name="modifier_keys_picker_title" msgid="244545904150587851">"Vyberte modifikačný kláves"</string>
     <string name="modifier_keys_picker_summary" msgid="739397232249560785">"Vyberte pre <xliff:g id="MODIFIER_KEY_DEFAULT_NAME">%1$s</xliff:g> nový kláves:"</string>
     <string name="default_keyboard_layout" msgid="8690689331289452201">"Predvolené"</string>
     <string name="speech_category_title" msgid="5995161659186229742">"Reč"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Aplikácia bude môcť využívať batériu na pozadí. Batéria sa môže minúť skôr, ako sa očakávalo."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Odstrániť"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Zrušiť"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Nabiť úplne"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Skontrolujte nabíjacie príslušenstvo"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Ďalšie informácie o nekompatibilnom nabíjaní"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Správca batérie"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatické, dopĺňanie, automatické dopĺňanie, údaje, prístupový kľúč, heslo"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Zmeniť"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Otvoriť"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nič nie je vybraté"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Skontrolujte, či ide o dôveryhodnú aplikáciu&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Automatické dopĺňanie Google&gt;%1$s&lt;/xliff:g&gt; určuje na základe obsahu obrazovky, čo je možné automaticky vyplniť."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Tu sa budú odteraz ukladať nové heslá, prístupové kľúče a ďalšie informácie. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; môže určovať, čo treba automaticky doplniť, pomocou obsahu na obrazovke."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Preferovaná služba pre heslá, prístupové kľúče a automatické dopĺňanie"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Chcete vypnúť všetky služby?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Keď sa prihlásite, heslá, prístupové kľúče a ďalšie uložené informácie nebudú pre automatické dopĺňanie k dispozícii."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Zmeňte si preferovanú službu na &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nové heslá, prístupové kľúče a ďalšie informácie sa budú odteraz ukladať tu. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; môže určovať, čo treba automaticky doplniť, pomocou obsahu na obrazovke."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Chcete používať %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Vypnúť"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Zmeniť"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Môžete mať zapnutých maximálne päť služieb"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Vypnite aspoň jednu službu, ak chcete pridať ďalšiu"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s určuje na základe obsahu na obrazovke, čo je možné automaticky doplniť."</string>
@@ -4753,10 +4769,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Skryť prehrávač"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Zobraziť prehrávač"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"médiá"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Povoliť rozšírenia softvéru kamery"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Povolí predvolenú implementáciu softvéru pokročilých funkcií kamery, napríklad videografiu Eyes Free."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Zapne sa Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM karty"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 87a7ae0..453d320 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Načini odklepanja"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Enako kot zaklepanje zaslona naprave"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Želite izbrati novo zaklepanje za zasebni prostor?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Samodejno zakleni"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Samodejno zaklepanje zasebnega prostora"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Samodejno zaklepanje zasebnega prostora"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Zasebni prostor lahko samodejno zaklenete, če nekaj časa ne uporabljate naprave"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Vsakič, ko se naprava zaklene"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"po 5 minutah nedejavnosti"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Za več možnosti se dotaknite sledilne ploščice spodaj desno."</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Hitrost kazalca"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Učenje potez na sledilni ploščici"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Pomik na začetni zaslon"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"S tremi prsti povlecite navzgor po sledilni ploščici."</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Pomik nazaj"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ta aplikacija bo lahko porabljala energijo baterije za izvajanje v ozadju. Baterija se bo morda izpraznila prej, kot bi pričakovali."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Odstrani"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Prekliči"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Napolni do konca"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Preverjanje pripomočka za polnjenje"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Več o nezdružljivem polnjenju"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Varčevanje z energijo baterije"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"samodejno, izpolnjevanje, samodejno izpolnjevanje, podatki, ključ za dostop, geslo"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Spremeni"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Odpri"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Izbran ni noben element"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Prepričajte se, da zaupate tej aplikaciji&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Samodejno izpolnjevanje&gt;%1$s&lt;/xliff:g&gt; iz elementov na zaslonu ugotovi, kaj je mogoče samodejno izpolniti."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Uporabi aplikacijo &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nova gesla, ključi za dostop in drugi podatki bodo odslej shranjeni tukaj. Aplikacija &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; lahko na podlagi prikaza na zaslonu ugotovi, kaj se lahko samodejno izpolni."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Želena storitev za gesla, ključe za dostop in samodejno izpolnjevanje"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Želite izklopiti vse storitve?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Gesla, ključi za dostop in drugi shranjeni podatki ne bodo na voljo za samodejno izpolnjevanje ob prijavi."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Želite spremeniti želeno storitev na &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nova gesla, ključi za dostop in drugi podatki bodo odslej shranjeni tukaj. Aplikacija &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; lahko na podlagi prikaza na zaslonu ugotovi, kaj se lahko samodejno izpolni."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Želite uporabiti ponudnika %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Izklopi"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Spremeni"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Vklopljenih je lahko največ pet storitev"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Če želite dodati novo storitev, izklopite vsaj eno obstoječo"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s na podlagi prikaza na zaslonu ugotovi, kaj se lahko samodejno izpolni."</string>
@@ -4764,10 +4769,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Skrij predvajalnik"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Prikaži predvajalnik"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"predstavnost"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Dovoli razširitve programske opreme za fotoaparat"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Omogoča privzeto uvedbo programske opreme za napredne funkcije fotoaparata, kot je videografija za slepe in slabovidne."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth se bo vklopil."</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Kartice SIM"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 2df9620..b32bb4b 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Mënyrat për ta shkyçur"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Njëlloj me kyçjen e ekranit të pajisjes"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Të zgjidhet një kyçje e re për hapësirën private?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Kyç automatikisht"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Kyç automatikisht hapësirën private"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Kyç automatikisht hapësirën private"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Mund ta kyçësh automatikisht hapësirën tënde private nëse nuk e ke përdorur pajisjen tënde për një periudhë kohore"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Sa herë që kyçet pajisja"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Pas 5 minutash pa aktivitet"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Motivi"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"Kodi PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Fjalëkalimi"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Të hiqen të gjitha llojet e shkyçjes së pajisjes?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Të hiqet mbrojtja e profilit?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Telefoni yt mbrohet nga një motiv në rast se humb ose vidhet."</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Telefoni yt mbrohet nga një motiv në rast se humb ose vidhet.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Kjo fshin po ashtu modelin e gjurmës së gishtit të ruajtur në pajisjen tënde. Modeli yt i fytyrës do të fshihet gjithashtu përgjithmonë dhe në mënyrë të sigurt. Nuk do të mund të përdorësh fytyrën ose gjurmën e gishtit për vërtetimin në aplikacione."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Telefoni yt mbrohet nga një kod PIN në rast se humb ose vidhet."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Do të humbasësh të dhënat e ruajtura, si p.sh. kodin PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kartat e konfiguruara për pagesë pa kontakt do të hiqen.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portofolat dhe aplikacionet e tjera që kërkojnë shkyçjen e pajisjes mund të mos funksionojnë siç duhet."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Telefoni yt mbrohet nga një kod PIN në rast se humb ose vidhet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Kjo fshin po ashtu modelin e gjurmës së gishtit të ruajtur në pajisjen tënde. Nuk do të mund të përdorësh gjurmën e gishtit për vërtetimin në aplikacione."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Do të humbasësh të dhënat e ruajtura, si p.sh. kodin PIN dhe modelin e gjurmës së gishtit.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kartat e konfiguruara për pagesë pa kontakt do të hiqen.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portofolat dhe aplikacionet e tjera që kërkojnë shkyçjen e pajisjes mund të mos funksionojnë siç duhet."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Telefoni yt mbrohet nga një kod PIN në rast se humb ose vidhet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Modeli yt i fytyrës do të fshihet gjithashtu përgjithmonë dhe në mënyrë të sigurt. Nuk do të mund ta përdorësh fytyrën për vërtetimin në aplikacione."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Do të humbasësh të dhënat e ruajtura, si p.sh. kodin PIN dhe modelin e fytyrës.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kartat e konfiguruara për pagesë pa kontakt do të hiqen.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portofolat dhe aplikacionet e tjera që kërkojnë shkyçjen e pajisjes mund të mos funksionojnë siç duhet."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Telefoni yt mbrohet nga një kod PIN në rast se humb ose vidhet.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Kjo fshin modelin e gjurmës së gishtit të ruajtur në pajisjen tënde. Modeli yt i fytyrës do të fshihet gjithashtu përgjithmonë dhe në mënyrë të sigurt. Nuk do të mund të përdorësh fytyrën ose gjurmën e gishtit për vërtetimin në aplikacione."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Do të humbasësh të dhënat e ruajtura, si p.sh. kodin PIN, si dhe modelet e fytyrës dhe të gjurmës së gishtit.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kartat e konfiguruara për pagesë pa kontakt do të hiqen.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Portofolat dhe aplikacionet e tjera që kërkojnë shkyçjen e pajisjes mund të mos funksionojnë siç duhet."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Telefoni yt mbrohet nga një fjalëkalim në rast se humb ose vidhet."</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Telefoni yt mbrohet nga një fjalëkalim në rast se humb ose vidhet.<xliff:g id="EMPTY_LINE">
 
@@ -1757,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"Arkivimi dështoi"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"\"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\" u arkivua"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"Restaurimi dështoi"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> po restaurohet"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"\"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\" po restaurohet"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"Një migrim tjetër është tashmë në vazhdim."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"Nuk ka hapësirë ruajtëse të mjaftueshme."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"Aplikacioni nuk ekziston."</string>
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Trokit te këndi poshtë djathtas i bllokut me prekje për më shumë opsione"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Shpejtësia e treguesit"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Mëso gjestet e bllokut me prekje"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Shko tek ekrani bazë"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Rrëshqit lart me tre gishta kudo në bllokun tënd me prekje"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Kthehu prapa"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ky aplikacion do të mund ta përdorë baterinë në sfond. Bateria mund të mbarojë më shpejt nga sa pritet."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Hiq"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Anulo"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Karikoje plotësisht"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Kontrollo aksesorin e karikimit"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Mëso më shumë për karikimin e papërputhshëm"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Menaxheri i baterisë"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"automatik, plotëso, plotësimi automatik, të dhënat, çelësi i kalimit, fjalëkalimi"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Ndrysho"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Hap"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Nuk është zgjedhur asnjë"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Sigurohu që ke besim te ky aplikacion&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Plotësimi automatik i Google&gt;%1$s&lt;/xliff:g&gt; përdor atë që ndodhet në ekranin tënd për të përcaktuar se çfarë mund të plotësohet automatikisht."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Fjalëkalimet, çelësat e kalimit dhe informacionet e tjera të reja do të ruhen këtu nga tani e tutje. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; mund të përdorë ato që janë në ekranin tënd për të përcaktuar se çfarë mund të plotësohet automatikisht."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Shërbimi i preferuar për fjalëkalimet, çelësat e kalimit dhe plotësimin automatik"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Të çaktivizohen të gjitha shërbimet?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Fjalëkalimet, çelësat e kalimit dhe informacionet e tjera të ruajtura nuk do të ofrohen për plotësimin automatik kur të identifikohesh"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Të ndryshohet shërbimi i preferuar te &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Fjalëkalimet e reja, çelësat e kalimit dhe informacionet e tjera do të ruhen këtu nga tani e tutje. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; mund të përdorë ato që janë në ekranin tënd për të përcaktuar se çfarë mund të plotësohet automatikisht."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Të përdoret %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Çaktivizo"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Ndrysho"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Mund të kesh vetëm 5 shërbime aktive"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Çaktivizo të paktën 1 shërbim për të shtuar një tjetër"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s përdor atë që ke në ekranin për të përcaktuar se çfarë mund të plotësohet automatikisht."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Fshih luajtësin"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Shfaq luajtësin"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Lejo shtesat e softuerit të kamerës"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Aktivizon implementimin e parazgjedhur të softuerit për veçoritë e përparuara të kamerës, si p.sh. videografia \"Pa shikuar\"."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth-i do të aktivizohet"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Interneti"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Kartat SIM"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5b05af8..6f08935 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -306,7 +306,7 @@
     <string name="security_settings_face_enroll_education_title_accessibility" msgid="3701874093226957891">"Подесите откључавање лицем"</string>
     <string name="security_settings_face_enroll_education_title_unlock_disabled" msgid="8810954233979716906">"Потврдите идентитет лицем"</string>
     <string name="security_settings_face_enroll_education_message" msgid="4308030157487176799"></string>
-    <string name="security_settings_face_enroll_education_start" msgid="8830924400907195590">"Започните"</string>
+    <string name="security_settings_face_enroll_education_start" msgid="8830924400907195590">"Започни"</string>
     <string name="security_settings_face_enroll_education_accessibility_dialog_message" msgid="2965952386172202665">"Ако је откључавање лицем са функцијом приступачности искључено, неки кораци за подешавање можда неће исправно радити са TalkBack-ом."</string>
     <string name="security_settings_face_enroll_education_accessibility_dialog_negative" msgid="7872647360361245461">"Назад"</string>
     <string name="security_settings_face_enroll_education_accessibility_dialog_positive" msgid="3148077647572203458">"Наставите подешавање"</string>
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Начини за откључавање"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Исто као закључавање екрана уређаја"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Одабраћете ново закључавање за приватни простор?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Аутоматски закључај"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Аутоматски закључајте приватан простор"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Аутоматски закључајте приватан простор"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Можете аутоматски да закључате приватан простор ако уређај нисте користили неко време"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Сваки пут кад се уређај закључа"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"После 5 минута неактивности"</string>
@@ -1768,7 +1767,7 @@
     <string name="archiving_failed" msgid="2037798988961634978">"Архивирање није успело"</string>
     <string name="archiving_succeeded" msgid="7891249456483297845">"Архивирано: <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="restoring_failed" msgid="3390531747355943533">"Враћање није успело"</string>
-    <string name="restoring_in_progress" msgid="7787443682651146115">"Враћа се <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+    <string name="restoring_in_progress" msgid="7787443682651146115">"Враћа се: <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
     <string name="another_migration_already_in_progress" msgid="6550546307856052261">"Други пренос је већ у току."</string>
     <string name="insufficient_storage" msgid="8115088042669030558">"Нема довољно простора у меморији."</string>
     <string name="does_not_exist" msgid="6499163879348776120">"Апликација не постоји."</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Додирните доњи десни угао тачпеда за више опција"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Брзина показивача"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Научите покрете за тачпед"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Иди на почетни екран"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Превуците нагоре са три прста било где на тачпеду"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Назад"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ова апликација ће моћи да користи батерију у позадини. Батерија може да се испразни раније него што је очекивано."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Уклони"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Откажи"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Пуни до краја"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Проверите додатну опрему за пуњење"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Сазнајте више о некомпатибилном пуњењу"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Менаџер батерије"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"аутоматски, попуњавање, аутоматско попуњавање, подаци, приступни кључ, лозинка"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Промени"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Отвори"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Ништа није изабрано"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Уверите се да је ова апликација поуздана&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google аутоматско попуњавање&gt;%1$s&lt;/xliff:g&gt; користи садржај екрана за утврђивање података који могу аутоматски да се попуне."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Користите &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Нове лозинке, приступни кључеви и други подаци ће се од сада чувати овде. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; може да користи оно што је на екрану ради одређивања шта може аутоматски да се попуни."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Жељена услуга за лозинке, приступне кључеве и аутоматско попуњавање"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Желите да искључите ову услугу?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Лозинке, приступни кључеви и друге сачуване информације неће бити доступне за аутоматско попуњавање када се пријавите"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Промените жељену услугу у &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Нове лозинке, приступни кључеви и други подаци ће се од сада чувати овде. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; може да користи оно што је на екрану ради одређивања шта може аутоматски да се попуни"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Желите да користите %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Искључи"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Промени"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Може да буде укључено само 5 услуга"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Искључите бар 1 услугу да бисте могли да додате другу"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s користи садржај на екрану да би утврдио шта може аутоматски да се попуни."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 161b15f..df68c11 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Olika sätt att låsa upp"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Samma som skärmlåset för enheten"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Välja ett nytt lås för ditt privata område?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Lås automatiskt"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Lås privat område automatiskt"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Lås privat område automatiskt"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Du kan låsa ditt privata område automatiskt om du inte har använt enheten på ett tag"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Varje gång enheten låses"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Efter fem minuters inaktivitet"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Mönster"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"Pinkod"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Lösenord"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Vill du ta bort alla typer av enhetsupplåsning?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Vill du ta bort profilens säkerhetsfunktioner?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Ett mönster skyddar telefonen om den kommer bort eller blir stulen"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Ett mönster skyddar telefonen om den kommer bort eller blir stulen.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Fingeravtrycksmodellen som sparats på enheten raderas. Ansiktsmodellen raderas också permanent på ett säkert sätt. Du kan inte längre använda ansiktsautentisering eller autentisering med fingeravtryck i appar."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"En pinkod skyddar telefonen om den kommer bort eller blir stulen"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Sparad data, som din pinkod, går förlorad.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort som har ställts in för kontaktlös betalning tas bort.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Plånböcker och andra appar som kräver enhetsupplåsning kanske inte fungerar som de ska."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"En pinkod skyddar telefonen om den kommer bort eller blir stulen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Fingeravtrycksmodellen som sparats på enheten raderas också. Du kan inte längre använda autentisering med fingeravtryck i appar."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Sparad data, som din pinkod och fingeravtrycksmodell, går förlorad.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort som har ställts in för kontaktlös betalning tas bort.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Plånböcker och andra appar som kräver enhetsupplåsning kanske inte fungerar som de ska."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"En pinkod skyddar telefonen om den kommer bort eller blir stulen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Ansiktsmodellen raderas också permanent på ett säkert sätt. Du kan inte längre använda ansiktsautentisering i appar."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Sparad data, som din pinkod och ansiktsmodell, går förlorad.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort som har ställts in för kontaktlös betalning tas bort.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Plånböcker och andra appar som kräver enhetsupplåsning kanske inte fungerar som de ska."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"En pinkod skyddar telefonen om den kommer bort eller blir stulen.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Fingeravtrycksmodellen som sparats på enheten raderas. Ansiktsmodellen raderas också permanent på ett säkert sätt. Du kan inte längre använda ansiktsautentisering eller autentisering med fingeravtryck i appar."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Sparad data, som din pinkod, ansiktsmodell och fingeravtrycksmodell, går förlorad.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kort som har ställts in för kontaktlös betalning tas bort.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Plånböcker och andra appar som kräver enhetsupplåsning kanske inte fungerar som de ska."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Ett lösenord skyddar telefonen om den kommer bort eller blir stulen"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Ett lösenord skyddar telefonen om den kommer bort eller blir stulen.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Tryck på det nedre högra hörnet av styrplattan för fler alternativ"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Markörens hastighet"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Lär dig rörelser för styrplattan"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Öppna startsidan"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Svep uppåt med tre fingrar var som helst på styrplattan"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Tillbaka"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Den här appen kan dra batteri i bakgrunden. Batteriet kan ta slut snabbare än beräknat."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Ta bort"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Avbryt"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Ladda fullt"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Kontrollera laddningstillbehöret"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Läs mer om inkompatibel laddning"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, fyll, autofyll, data, nyckel, lösenord"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Ändring"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Öppna"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Inget har valts"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Kontrollera att du litar på den här appen&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofyll&gt;%1$s&lt;/xliff:g&gt; identifierar vad som kan fyllas i automatiskt utifrån vad som visas på skärmen."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Använd &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nya lösenord, nycklar och annan information sparas här från och med nu. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan använda det som visas på skärmen för att avgöra vad som kan fyllas i automatiskt."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Föredragen tjänst för lösenord, nycklar och autofyll"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Vill du inaktivera alla tjänster?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;Lösenord, nycklar och andra sparade uppgifter blir inte tillgängliga för autofyll när du loggar in"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Ändra tjänsten du föredrar till &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Nya lösenord, nycklar och andra uppgifter sparas från och med nu här. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kan använda det som visas på skärmen för att avgöra vad som kan fyllas i automatiskt"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Vill du använda %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Inaktivera"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Ändra"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Du kan bara ha fem aktiva tjänster"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Inaktivera minst en tjänst för att lägga till en annan"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s använder det som visas på skärmen för att avgöra vad som kan fyllas i automatiskt."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Dölj spelare"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Visa spelare"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Tillåt programvarutillägg för kameran"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Aktiverar implementeringen av standardprogramvaran för avancerade kamerafunktioner, till exempel videoinspelning utan att använda ögonen."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth aktiveras"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-kort"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index a85ee48..aec94f8 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Mbinu za kufungua"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Mbinu sawa ya kufunga skrini ya kifaa"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Ungependa kuchagua mbinu mpya ya kufunga sehemu ya faragha?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Funga kiotomatiki"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Kufunga sehemu ya faragha kiotomatiki"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Kufunga sehemu ya faragha kiotomatiki"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Unaweza kufunga sehemu yako ya faragha kiotomatiki ikiwa hujatumia kifaa chako kwa muda"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Kila wakati kifaa kinapojifunga"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Ikikaa kwa dakika 5 bila shughuli"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Gusa kona ya upande wa chini kulia wa padi ya kugusa kwa chaguo zaidi"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Kasi ya kiashiria"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Jifunze ishara za padi ya kugusa"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Nenda kwenye ukurasa wa mwanzo"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Telezesha vidole vitatu juu popote kwenye padi yako ya kugusa"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Rudi nyuma"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Programu hii itatumia chaji chinichini. Hali hii inaweza kufanya chaji ya betri iishe haraka."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Ondoa"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Ghairi"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Chaji hadi ijae"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Kagua kifaa cha kuchaji"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Pata maelezo zaidi kuhusu adapta ya kuchaji isiyooana"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Kidhibiti cha Betri"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"kiotomatiki, jaza, jaza kiotomatiki, data, ufunguo wa siri, nenosiri"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Badilisha"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Fungua"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Hujachagua yoyote"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Hakikisha kuwa unaamini programu hii&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; hutumia kilicho kwenye skrini yako kubaini kinachoweza kujazwa kiotomatiki."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Tumia &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Manenosiri mapya, funguo za siri na maelezo mengine yatahifadhiwa hapa kuanzia sasa. Huenda &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ikatumia maudhui kwenye skrini yako kubaini kinachoweza kujazwa kiotomatiki."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Huduma unayopendelea kwa manenosiri, funguo za siri na kujaza kiotomatiki"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Ungependa kuzima huduma zote?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Manenosiri, funguo za siri na maelezo mengine yaliyohifadhiwa hayatapatikana ili kujazwa kiotomatiki unapoingia katika akaunti"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Badili huduma unayopendelea kuwa &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Manenosiri mapya, funguo za siri na maelezo mengine yatahifadhiwa hapa kuanzia sasa. Huenda &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ikatumia maudhui kwenye skrini yako kubaini kinachoweza kujazwa kiotomatiki"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Ungependa kutumia %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Zima"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Badilisha"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Unaweza kuwasha huduma 5 pekee"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Zima angalau huduma 1 ili uweze kuongeza nyingine"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s hutumia maudhui kwenye skrini yako kubaini kinachoweza kujazwa kiotomatiki."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ficha kichezaji"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Onyesha kichezaji"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"maudhui"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Ruhusu viendelezi vya programu ya kamera"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Hali hii huwezesha utekelezaji chaguomsingi wa programu ya vipengele vya kina vya kamera, kama vile utengenezaji video Bila Kuangalia."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth itawaka"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Intaneti"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 43f4e02..aa7a17a 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"அன்லாக் செய்வதற்கான வழிகள்"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"சாதனத் திரைப் பூட்டைப் போன்றது"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ரகசிய இடத்திற்கான புதிய பூட்டைத் தேர்வுசெய்யவா?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"தானாகவே பூட்டுதல்"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ரகசிய இடத்தைத் தானாகவே பூட்டுதல்"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ரகசிய இடத்தைத் தானாகவே பூட்டுதல்"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"உங்கள் சாதனத்தைக் குறிப்பிட்ட காலத்திற்கு நீங்கள் பயன்படுத்தவில்லை எனில் உங்கள் ரகசிய இடத்தைத் தானாகவே பூட்டலாம்"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"சாதனம் பூட்டப்படும் ஒவ்வொரு முறையும்"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 நிமிடச் செயலற்ற நிலைக்குப் பின்பு"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"பேட்டர்ன்"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"பின்"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"கடவுச்சொல்"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"அனைத்து வகையான சாதன அன்லாக் முறைகளையும் அகற்றவா?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"சுயவிவரப் பாதுகாப்பை அகற்றவா?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"உங்கள் மொபைல் தொலைந்தாலோ திருடப்பட்டாலோ பேட்டர்ன் அதைப் பாதுகாத்திடும்"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"உங்கள் மொபைல் தொலைந்தாலோ திருடப்பட்டாலோ பேட்டர்ன் அதைப் பாதுகாத்திடும்.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>உங்கள் சாதனத்தில் சேமிக்கப்பட்டுள்ள கைரேகைப் பதிவை இது நீக்கிவிடும். உங்கள் முகத் தோற்றப் பதிவும் நிரந்தரமாகவும் பாதுகாப்பாகவும் நீக்கப்படும். ஆப்ஸில் அங்கீகரிக்க முகத்தையோ கைரேகையையோ பயன்படுத்த முடியாது."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"உங்கள் மொபைல் தொலைந்தாலோ திருடப்பட்டாலோ \'பின்\' அதைப் பாதுகாத்திடும்"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"உங்கள் பின் போன்ற சேமித்த தரவை இழப்பீர்கள்.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>காண்டாக்ட்லெஸ் முறையில் பணம் செலுத்துவதற்காக அமைக்கப்பட்ட கார்டுகள் அகற்றப்படும்.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>சாதன அன்லாக் தேவைப்படும் வாலட்களும் பிற ஆப்ஸும் சரியாகச் செயல்படாமல் போகலாம்."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"உங்கள் மொபைல் தொலைந்தாலோ திருடப்பட்டாலோ \'பின்\' அதைப் பாதுகாத்திடும்.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>உங்கள் சாதனத்தில் சேமிக்கப்பட்டுள்ள கைரேகைப் பதிவையும் இது நீக்கிவிடும். ஆப்ஸில் அங்கீகரிக்க கைரேகையைப் பயன்படுத்த முடியாது."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"உங்கள் பின், கைரேகைப் பதிவு போன்ற சேமித்த தரவை இழப்பீர்கள்.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>காண்டாக்ட்லெஸ் முறையில் பணம் செலுத்துவதற்காக அமைக்கப்பட்ட கார்டுகள் அகற்றப்படும்.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>சாதன அன்லாக் தேவைப்படும் வாலட்களும் பிற ஆப்ஸும் சரியாகச் செயல்படாமல் போகலாம்."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"உங்கள் மொபைல் தொலைந்தாலோ திருடப்பட்டாலோ \'பின்\' அதைப் பாதுகாத்திடும்.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>உங்கள் முகத் தோற்றப் பதிவும் நிரந்தரமாகவும் பாதுகாப்பாகவும் நீக்கப்படும். ஆப்ஸில் அங்கீகரிக்க முகத்தைப் பயன்படுத்த முடியாது."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"உங்கள் பின், முகத் தோற்றப் பதிவு போன்ற சேமித்த தரவை இழப்பீர்கள்.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>காண்டாக்ட்லெஸ் முறையில் பணம் செலுத்துவதற்காக அமைக்கப்பட்ட கார்டுகள் அகற்றப்படும்.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>சாதன அன்லாக் தேவைப்படும் வாலட்களும் பிற ஆப்ஸும் சரியாகச் செயல்படாமல் போகலாம்."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"உங்கள் மொபைல் தொலைந்தாலோ திருடப்பட்டாலோ \'பின்\' அதைப் பாதுகாத்திடும்.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>உங்கள் சாதனத்தில் சேமிக்கப்பட்டுள்ள கைரேகைப் பதிவை இது நீக்கிவிடும். உங்கள் முகத் தோற்றப் பதிவும் நிரந்தரமாகவும் பாதுகாப்பாகவும் நீக்கப்படும். ஆப்ஸில் அங்கீகரிக்க முகத்தையோ கைரேகையையோ பயன்படுத்த முடியாது."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"உங்கள் பின், முகம், கைரேகைப் பதிவுகள் போன்ற சேமித்த தரவை இழப்பீர்கள்.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>காண்டாக்ட்லெஸ் முறையில் பணம் செலுத்துவதற்காக அமைக்கப்பட்ட கார்டுகள் அகற்றப்படும்.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>சாதன அன்லாக் தேவைப்படும் வாலட்களும் பிற ஆப்ஸும் சரியாகச் செயல்படாமல் போகலாம்."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"உங்கள் மொபைல் தொலைந்தாலோ திருடப்பட்டாலோ கடவுச்சொல் அதைப் பாதுகாத்திடும்"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"உங்கள் மொபைல் தொலைந்தாலோ திருடப்பட்டாலோ கடவுச்சொல் அதைப் பாதுகாத்திடும்.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"மேலும் விருப்பங்களுக்கு டச்பேடின் கீழ்வலது மூலையில் தட்டுக"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"பாயிண்ட்டர் வேகம்"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"டச்பேட் சைகைகளை அறிந்துகொள்ளுங்கள்"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"முகப்பிற்குச் செல்"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"டச்பேடில் மூன்று விரல்களால் மேல்நோக்கி ஸ்வைப் செய்யுங்கள்"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"பின்செல்"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"இந்த ஆப்ஸ், பின்னணியில் இயங்கி பேட்டரியைப் பயன்படுத்த முடியும். இதனால், பேட்டரி வழக்கத்தைவிட வேகமாகத் தீர்ந்துவிடக்கூடும்."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"அகற்று"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"ரத்துசெய்"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"முழுமையாகச் சார்ஜ் ஏற்றுங்கள்"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"சார்ஜிங் துணைக்கருவியைச் சரிபாருங்கள்"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"இணக்கமற்ற சார்ஜிங் குறித்து மேலும் அறிக"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"பேட்டரி நிர்வாகி"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"தானியங்கு, நிரப்பு, தன்னிரப்பி, தரவு, கடவுச்சாவி, கடவுச்சொல்"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"மாற்று"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"திற"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"எதுவும் தேர்ந்தெடுக்கப்படவில்லை"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;இந்த ஆப்ஸை நம்புகிறீர்கள் என்பதை உறுதிப்படுத்திக்கொள்ளவும்&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; உங்கள் திரையில் இருப்பதைப் பயன்படுத்தி, எவற்றையெல்லாம் தன்னிரப்ப முடியும் என்பதைத் தீர்மானிக்கும்."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ஆப்ஸைப் பயன்படுத்த வேண்டுமா?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; இனி புதிய கடவுச்சொற்கள், கடவுச்சாவிகள் மற்றும் பிற தகவல்கள் இங்கே சேமிக்கப்படும். எவற்றைத் தானாக நிரப்ப முடியும் என்பதைத் தீர்மானிக்க &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; உங்கள் திரையில் உள்ளவற்றைப் பயன்படுத்தக்கூடும்."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"கடவுச்சொற்கள், கடவுச்சாவிகள் &amp; தன்னிரப்பிக்கான விருப்பச் சேவை"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;அனைத்துச் சேவைகளையும் முடக்கவா?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; கடவுச்சொற்கள், கடவுச்சாவிகள் மற்றும் சேமிக்கப்பட்ட பிற தகவல்கள் நீங்கள் உள்நுழையும்போது தானாக நிரப்புவதற்குக் கிடைக்காது"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;உங்களுக்கு விருப்பமான சேவையாக &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ஆப்ஸை மாற்றுங்கள். புதிய கடவுச்சொற்கள், கடவுச்சாவிகள் மற்றும் பிற தகவல்கள் இப்போதிலிருந்து இங்கே சேமிக்கப்படும். எவற்றைத் தானாக நிரப்ப முடியும் என்பதைத் தீர்மானிக்க &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; உங்கள் திரையில் உள்ளவற்றைப் பயன்படுத்தக்கூடும்"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s ஐப் பயன்படுத்தலாமா?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"முடக்கு"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"மாற்று"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"5 சேவைகளை மட்டுமே இயக்கி வைத்திருக்கலாம்"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"மற்றொரு சேவையைச் சேர்க்க, குறைந்தது ஒரு சேவையையாவது முடக்கவும்"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"எவற்றைத் தானாக நிரப்பலாம் என்பதைத் தீர்மானிக்க உங்கள் திரையில் உள்ளவற்றை %1$s பயன்படுத்தும்."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"பிளேயர் மறை"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"பிளேயரைக் காட்டும்"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"மீடியா"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"கேமரா மென்பொருள் நீட்டிப்புகளை அனுமதித்தல்"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"\'திரையைப் பார்க்காமலேயே படம்பிடித்தல்\' போன்ற மேம்பட்ட கேமரா அம்சங்களின் இயல்புநிலை மென்பொருள் செயலாக்கத்தை இயக்கும்."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"புளூடூத் ஆன் செய்யப்படும்"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"இணையம்"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"சிம்கள்"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index bb8a2e7..71b4ae1 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"అన్‌లాక్ చేయడానికి మార్గాలు"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"పరికర స్క్రీన్ లాక్ లాంటిది"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"ప్రైవేట్ స్పేస్ కోసం కొత్త లాక్‌ను ఎంచుకోవాలా?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ఆటోమేటిక్‌గా లాక్ చేయండి"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ప్రైవేట్ స్పేస్‌ను ఆటోమేటిక్‌గా లాక్ చేయండి"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ప్రైవేట్ స్పేస్‌ను ఆటోమేటిక్‌గా లాక్ చేయండి"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"మీ పరికరాన్ని కొంత వ్యవధి పాటు వినియోగించకపోతే, మీ ప్రైవేట్ స్పేస్‌ను ఆటోమేటిక్‌గా లాక్ చేయవచ్చు"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"పరికరం లాక్ అయిన ప్రతిసారీ"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 నిమిషాలు ఇన్‌యాక్టివ్‌గా ఉన్న తర్వాత"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"మనిన్ని ఆప్షన్‌లకై టచ్‌ప్యాడ్ దిగువ కుడి మూలన ట్యాప్ చేయండి"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"పాయింటర్ స్పీడ్"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"టచ్‌ప్యాడ్ సంజ్ఞ గూర్చి తెలుసుకోండి"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"మొదటి ట్యాబ్‌కు వెళ్లండి"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"మీ టచ్‌ప్యాడ్‌పై ఎక్కడైనా మూడు వేళ్లతో పైకి స్వైప్ చేయండి"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"వెనుకకు వెళ్లండి"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"ఈ యాప్ బ్యాక్‌గ్రౌండ్‌లో బ్యాటరీని ఉపయోగించగలదు. మీ బ్యాటరీ ఛార్జింగ్ త్వరగా ఖాళీ కావచ్చు."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"తీసివేయండి"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"రద్దు చేయండి"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"ఫుల్ కావడానికి ఛార్జ్ చేయండి"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ఛార్జింగ్ యాక్సెసరీని చెక్ చేయండి"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"ఛార్జింగ్ అనుకూలంగా లేకపోవడం అనే దాని గురించి మరింత తెలుసుకోండి"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"బ్యాటరీ మేనేజర్"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"ఆటోమేటిక్, ఫిల్, ఆటోఫిల్, డేటా, పాస్-కీ, పాస్‌వర్డ్"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"మార్చండి"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"తెరవండి"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"ఏదీ ఎంచుకోలేదు"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ఈ యాప్‌ను మీరు విశ్వసిస్తున్నట్లు నిర్ధారించండి&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; మీ స్క్రీన్‌పై ఉన్న వాటిని పరిగణనలోకి తీసుకుని వేటిని ఆటోఫిల్ చేయాలో నిర్ణయిస్తుంది."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;ను ఉపయోగించాలా?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; కొత్త పాస్‌వర్డ్‌లు, పాస్-కీలు, ఇంకా ఇతర సమాచారం ఇక నుండి ఇక్కడ సేవ్ చేయబడుతుంది. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; వేటిని ఆటోఫిల్ చేయాలో నిర్ణయించడానికి మీ స్క్రీన్‌పై ఉన్న వాటిని ఉపయోగించవచ్చు."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"పాస్‌వర్డ్‌లు, పాస్-కీలు, ఆటోఫిల్ కోసం ప్రాధాన్య సర్వీస్"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;అన్ని సర్వీస్‌లను ఆఫ్ చేయాలా?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; మీరు సైన్ ఇన్ చేసినప్పుడు ఆటోఫిల్ చేయడానికి పాస్‌వర్డ్‌లు, పాస్-కీలు, అలాగే ఇతర సేవ్ చేసిన సమాచారం అందుబాటులో ఉండదు"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;మీ ప్రాధాన్య సర్వీస్‌ను &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;కి మార్చాలా?&lt;/b&gt;&lt;br/&gt; &lt;br/&gt; కొత్త పాస్‌వర్డ్‌లు, పాస్-కీలు, ఇంకా ఇతర సమాచారం ఇప్పటినుండి ఇక్కడ సేవ్ చేయబడుతుంది. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; వేటిని ఆటోఫిల్ చేయాలో నిర్ణయించడానికి మీ స్క్రీన్‌పై ఉన్న వాటిని ఉపయోగించవచ్చు"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$sని ఉపయోగించాలా?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ఆఫ్ చేయండి"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"మార్చండి"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"మీరు కేవలం 5 సర్వీస్‌ను మాత్రమే కలిగి ఉండవచ్చు"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"మరొక సర్వీస్‌ను జోడించడానికి కనీసం 1 సర్వీస్‌ను ఆఫ్ చేయండి"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"ఏది ఆటోఫిల్ చేయవచ్చో గుర్తించడానికి %1$s మీ స్క్రీన్‌పై ఉన్న వాటిని ఉపయోగిస్తుంది."</string>
@@ -4610,7 +4615,7 @@
     <string name="dsds_notification_after_suw_text" msgid="1287357774676361084">"యాక్టివ్‌గా ఉన్న మీ SIMను ఎంచుకోండి లేదా 2 SIMలను ఒకేసారి ఉపయోగించండి"</string>
     <string name="choose_sim_title" msgid="66509047151583877">"ఉపయోగించడానికి SIMను ఎంచుకోండి"</string>
     <string name="choose_sim_text" msgid="8992163497852069924">"{count,plural, =1{ఈ పరికరంలో 1 SIM అందుబాటులో ఉంది, కానీ మీరు ఒకసారి ఒకదాన్ని మాత్రమే ఉపయోగించడానికి వీలవుతుంది}=2{ఈ పరికరంలో 2 SIMలు అందుబాటులో ఉన్నాయి, కానీ మీరు ఒకసారి ఒకదాన్ని మాత్రమే ఉపయోగించడానికి వీలవుతుంది}other{ఈ పరికరంలో # SIMలు అందుబాటులో ఉన్నాయి, కానీ మీరు ఒకసారి ఒకదాన్ని మాత్రమే ఉపయోగించడానికి వీలవుతుంది}}"</string>
-    <string name="choose_sim_activating" msgid="6485547671356386998">"<xliff:g id="ELLIPSIS">…</xliff:g>‌నుఆన్ చేస్తోంది"</string>
+    <string name="choose_sim_activating" msgid="6485547671356386998">"ఆన్ అవుతోంది<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
     <string name="choose_sim_could_not_activate" msgid="866488735834045525">"ప్రస్తుతం ఈ SIMను ఆన్ చేయడం సాధ్యపడలేదు"</string>
     <string name="switch_sim_dialog_title" msgid="5407316878973237773">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>ను ఉపయోగించాలా?"</string>
     <string name="switch_sim_dialog_text" msgid="7530186862171635464">"మొబైల్ డేటా, కాల్స్, SMSల కోసం <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ఉపయోగించబడుతుంది."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"ప్లేయర్‌ను దాచు"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"ప్లేయర్‌ను చూపించు"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"మీడియా"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"కెమెరా సాఫ్ట్‌వేర్ ఎక్స్‌టెన్షన్‌లను అనుమతించండి"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"కంటిచూపు అవసరం ఉండని వీడియోగ్రఫీ వంటి అధునాతన కెమెరా ఫీచర్‌ల ఆటోమేటిక్ సాఫ్ట్‌వేర్ అమలును ప్రారంభిస్తుంది."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"బ్లూటూత్ ఆన్ చేయబడుతుంది"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"ఇంటర్నెట్"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMలు"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 090cbad..31129b5 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"วิธีปลดล็อก"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"เหมือนกับล็อกหน้าจออุปกรณ์"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"เลือกการล็อกใหม่สำหรับพื้นที่ส่วนตัวไหม"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"ล็อกโดยอัตโนมัติ"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"ล็อกพื้นที่ส่วนตัวโดยอัตโนมัติ"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"ล็อกพื้นที่ส่วนตัวโดยอัตโนมัติ"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"คุณสามารถล็อกพื้นที่ส่วนตัวโดยอัตโนมัติหากไม่ได้ใช้อุปกรณ์เป็นระยะเวลาหนึ่ง"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ทุกครั้งที่อุปกรณ์ล็อก"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"หลังจากไม่มีการใช้งานเป็นเวลา 5 นาที"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"แตะที่มุมล่างขวาของทัชแพดเพื่อดูตัวเลือกเพิ่มเติม"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"ความเร็วของตัวชี้"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"เรียนรู้ท่าทางสัมผัสของทัชแพด"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"ไปที่หน้าจอหลัก"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"ใช้ 3 นิ้วปัดขึ้นจากตำแหน่งใดก็ได้บนทัชแพด"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"ย้อนกลับ"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"แอปนี้จะใช้แบตเตอรี่ในเบื้องหลังได้ แบตเตอรี่จึงอาจจะหมดเร็วกว่าที่คาดไว้"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"นำออก"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"ยกเลิก"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"ชาร์จจนเต็ม"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"ตรวจสอบอุปกรณ์เสริมสำหรับการชาร์จ"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"ดูข้อมูลเพิ่มเติมเกี่ยวกับการชาร์จด้วยอะแดปเตอร์ที่ใช้ร่วมกันไม่ได้"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"ตัวจัดการแบตเตอรี่"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"อัตโนมัติ, ป้อน, ป้อนข้อความอัตโนมัติ, ข้อมูล, พาสคีย์, รหัสผ่าน"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"การเปลี่ยนแปลง"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"เปิด"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"ไม่มีรายการที่เลือก"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;ตรวจดูว่าคุณเชื่อถือแอปนี้ได้&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google ป้อนอัตโนมัติ&gt;%1$s&lt;/xliff:g&gt; ใช้สิ่งที่อยู่บนหน้าจอเพื่อดูว่าจะป้อนข้อมูลใดโดยอัตโนมัติได้บ้าง"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;ใช้ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ระบบจะบันทึกรหัสผ่านใหม่ พาสคีย์ และข้อมูลอื่นๆ ไว้ที่นี่นับจากนี้เป็นต้นไป &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; อาจใช้สิ่งที่อยู่บนหน้าจอเพื่อดูว่าจะป้อนข้อมูลใดโดยอัตโนมัติได้บ้าง"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"บริการที่ต้องการสำหรับรหัสผ่าน พาสคีย์ และป้อนข้อความอัตโนมัติ"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;ต้องการปิดบริการทั้งหมดหรือไม่&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ระบบจะไม่ป้อนรหัสผ่าน พาสคีย์ และข้อมูลอื่นๆ ที่บันทึกไว้โดยอัตโนมัติเมื่อคุณลงชื่อเข้าใช้"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;เปลี่ยนบริการที่ต้องการเป็น &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ระบบจะบันทึกรหัสผ่านใหม่ พาสคีย์ และข้อมูลอื่นๆ ไว้ที่นี่นับจากนี้เป็นต้นไป &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; อาจใช้สิ่งที่อยู่บนหน้าจอเพื่อดูว่าจะป้อนข้อมูลใดโดยอัตโนมัติได้บ้าง"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"ใช้ %1$s ใช่ไหม"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"ปิด"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"เปลี่ยน"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"คุณเปิดใช้บริการได้เพียง 5 รายการเท่านั้น"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"ปิดบริการอย่างน้อย 1 รายการเพื่อเพิ่มบริการอื่น"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ใช้สิ่งที่อยู่บนหน้าจอเพื่อดูว่าจะป้อนข้อมูลใดโดยอัตโนมัติได้บ้าง"</string>
@@ -4753,10 +4758,10 @@
     <string name="disable_screen_share_protections_for_apps_and_notifications" msgid="4987116103699222633">"ปิดใช้การป้องกันการแชร์หน้าจอ"</string>
     <string name="disable_screen_share_protections_for_apps_and_notifications_summary" msgid="932295234626582052">"ปิดใช้การป้องกันแอปและการแจ้งเตือนที่ระบบใช้ในระหว่างการแชร์หน้าจอ"</string>
     <string name="media_controls_title" msgid="403271085636252597">"สื่อ"</string>
-    <string name="media_controls_resume_title" msgid="855076860336652370">"ปักหมุดโปรแกรมเล่นสื่อ"</string>
-    <string name="media_controls_resume_description" msgid="3163482266454802097">"โปรแกรมเล่นสื่อจะยังเปิดอยู่ในการตั้งค่าด่วนเพื่อกลับมาเล่นต่อได้โดยเร็ว"</string>
+    <string name="media_controls_resume_title" msgid="855076860336652370">"ปักหมุดมีเดียเพลเยอร์"</string>
+    <string name="media_controls_resume_description" msgid="3163482266454802097">"มีเดียเพลเยอร์จะยังเปิดอยู่ในการตั้งค่าด่วนเพื่อกลับมาเล่นต่อได้โดยเร็ว"</string>
     <string name="media_controls_lockscreen_title" msgid="2188311721857512510">"แสดงสื่อในหน้าจอล็อก"</string>
-    <string name="media_controls_lockscreen_description" msgid="3320333660404439510">"โปรแกรมเล่นสื่อจะยังเปิดอยู่ในหน้าจอล็อกเพื่อกลับมาเล่นต่อได้โดยเร็ว"</string>
+    <string name="media_controls_lockscreen_description" msgid="3320333660404439510">"มีเดียเพลเยอร์จะยังเปิดอยู่ในหน้าจอล็อกเพื่อกลับมาเล่นต่อได้โดยเร็ว"</string>
     <string name="media_controls_recommendations_title" msgid="3012692549413927608">"แสดงคำแนะนำสื่อจาก Assistant"</string>
     <string name="media_controls_recommendations_description" msgid="7596498733126824030">"อิงตามกิจกรรมของคุณ"</string>
     <string name="media_controls_hide_player" msgid="2751439192580884015">"ซ่อนโปรแกรมเล่น"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index b80d6ff..b9c3e83 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Mga paraan para mag-unlock"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Kapareho ng lock ng screen ng device"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Pumili ng bagong lock para sa pribadong space?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Awtomatikong i-lock"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Awtomatikong i-lock ang pribadong space"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Awtomatikong i-lock ang pribadong space"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Puwede mong awtomatikong i-lock ang pribadong space mo kung matagal mo nang hindi ginamit ang iyong device"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Sa tuwing magla-lock ang device"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Paglipas ng 5 minutong walang aktibidad"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"I-tap ang kanang sulok sa ibaba ng touchpad para sa higit pang opsyon"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Bilis ng pointer"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Matuto ng mga galaw sa touchpad"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Pumunta sa home"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Mag-swipe pataas gamit ang 3 daliri saanman sa touchpad mo"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Bumalik"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Makakagamit ang app na ito ng baterya sa background. Maaaring maubos ang iyong baterya nang mas maaga kaysa sa inaasahan."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Alisin"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Kanselahin"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"I-charge hanggang mapuno"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Suriin ang accessory sa pag-charge"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Matuto pa tungkol sa hindi compatible na pag-charge"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"auto, fill, autofill, data, passkey, password"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Baguhin"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Buksan"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Walang pinili"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Tiyaking pinagkakatiwalaan mo ang app na ito&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Ginagamit ng &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ang nasa iyong screen para matukoy kung ano ang pwedeng i-autofill."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Gamitin ang &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Mase-save ang mga bagong password, passkey, at iba pang impormasyon dito mula ngayon. Puwdeng gamitin ng &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kung ano ang nasa screen mo para matukoy kung ano ang puwedeng i-autofill."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Gustong serbisyo para sa mga password, mga passkey, at autofill"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;I-off ang lahat ng serbisyo?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Hindi magiging available para sa autofill ang mga password, passkey, at iba pang naka-save na impormasyon kapag nag-sign in ka"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Baguhin ang gusto mong serbisyo sa &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Mase-save dito ang mga bagong password, passkey, at iba pang impormasyon mula ngayon. Puwedeng gamitin ng &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kung ano ang nasa screen mo para matukoy kung ano ang puwedeng i-autofill"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Gamitin ang %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"I-off"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Baguhin"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"5 serbisyo lang ang puwede mong i-on"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"I-off ang kahit 1 serbisyo para magdagdag ng isa pa"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"Ginagamit ng %1$s kung ano ang nasa iyong screen para tukuyin kung ano ang puwedeng i-autofill."</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 3950ea3..0ce8dbc 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Kilidi açma yöntemleri"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Cihaz ekranı kilidiyle aynı"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Özel alan için yeni bir kilit seçilsin mi?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Otomatik olarak kilitleyin"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Özel alanı otomatik olarak kilitleyin"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Özel alanı otomatik olarak kilitleyin"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Cihazınızı bir süredir kullanmadıysanız özel alanınızı otomatik olarak kilitleyebilirsiniz"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Cihaz her kilitlendiğinde"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 dakika etkinlik olmaması durumunda"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Daha fazlası için dokunmatik alanın sağ alt köşesine dokunun"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"İşaretçi hızı"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Dokunmatik alan hareketlerini öğren"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Ana ekrana gidin"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Dokunmatik alanda üç parmağınızla yukarı kaydırın"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Geri dön"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Bu uygulama arka planda pil gücünü kullanabilecek. Piliniz beklenenden daha erken bitebilir."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Kaldır"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"İptal"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Tam kapasitede şarj et"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Şarj aksesuarını kontrol edin"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Uyumsuz şarj hakkında daha fazla bilgi"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Pil Yöneticisi"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"otomatik, doldurma, otomatik doldurma, veriler, geçiş anahtarı, şifre"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Değiştir"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Aç"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Öğe seçilmedi"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Bu uygulamaya güvendiğinizden emin olun&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Otomatik Doldurma&gt;%1$s&lt;/xliff:g&gt; otomatik doldurulabilecek öğeleri belirlemek için ekranınızdaki bilgileri kullanır."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; kullanılsın mı?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Yeni şifreler, geçiş anahtarları ve diğer bilgiler artık buraya kaydedilecek. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; otomatik doldurulabilecek alanları belirlemek için ekranınızdaki bilgileri kullanabilir."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Şifreler, geçiş anahtarları ve otomatik doldurma için tercih edilen hizmet"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Tüm hizmetler devre dışı bırakılsın mı?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Şifreler, geçiş anahtarları ve diğer kayıtlı bilgiler oturum açtığınızda otomatik doldurma için kullanılamayacak"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Tercih ettiğiniz hizmet &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; olarak değiştirilsin mi?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Yeni şifreler, geçiş anahtarları ve diğer bilgiler artık buraya kaydedilecek. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; otomatik doldurulabilecek alanları belirlemek için ekranınızdaki bilgileri kullanabilir."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s kullanılsın mı?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Kapat"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Değiştir"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"En fazla beş hizmet etkinleştirebilirsiniz"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Başka hizmet eklemek için en az bir hizmeti devre dışı bırakın"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s, nelerin otomatik olarak doldurulabileceğini belirlemek için ekranınızdan aldığı bilgiyi kullanır."</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Oynatıcıyı gizle"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Oynatıcıyı göster"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"medya"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Kamera yazılım uzantılarına izin ver"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Ekranı görmenize gerek olmayan video çekimi gibi gelişmiş kamera özelliklerinin varsayılan yazılımını uygulama sürecini etkinleştirir."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth açılacak"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"İnternet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM\'ler"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 4baab8a..a8113fd 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Способи розблокування"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Той самий спосіб розблокування, що й для екрана пристрою"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Вибрати нове блокування приватного простору?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Блокувати автоматично"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Автоматичне блокування приватного простору"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Автоматичне блокування приватного простору"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Ви можете блокувати приватний простір автоматично, якщо не використовуєте пристрій протягом певного часу"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Щоразу, коли пристрій блокується"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Через 5 хвилин неактивності"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Ключ"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN-код"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Пароль"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Видалити всі способи розблокування пристрою?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Вимкнути захист профілю?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Ключ захищає телефон у разі втрати чи викрадення"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Ключ захищає телефон у разі втрати чи викрадення.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Модель відбитка пальця, що зберігається на пристрої, буде видалено. Модель обличчя також буде остаточно видалено без можливості відновлення. Ви не зможете використовувати фейс-контроль або відбиток пальця для автентифікації в додатках."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"PIN-код захищає телефон у разі втрати чи викрадення"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Ви втратите збережені дані, наприклад PIN-код.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картки, для яких налаштовано безконтактну оплату, буде видалено.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Гаманці й інші додатки, які вимагають розблокування пристрою, можуть не працювати як слід."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"PIN-код захищає телефон у разі втрати чи викрадення.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Модель відбитка пальця, що зберігається на пристрої, також буде видалено. Ви не зможете використовувати відбиток пальця для автентифікації в додатках."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Ви втратите збережені дані, наприклад PIN-код і модель відбитка пальця.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картки, для яких налаштовано безконтактну оплату, буде видалено.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Гаманці й інші додатки, які вимагають розблокування пристрою, можуть не працювати як слід."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"PIN-код захищає телефон у разі втрати чи викрадення.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Модель обличчя також буде остаточно видалено без можливості відновлення. Ви не зможете використовувати фейс-контроль для автентифікації в додатках."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Ви втратите збережені дані, наприклад PIN-код і модель обличчя.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картки, для яких налаштовано безконтактну оплату, буде видалено.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Гаманці й інші додатки, які вимагають розблокування пристрою, можуть не працювати як слід."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"PIN-код захищає телефон у разі втрати чи викрадення.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Модель відбитка пальця, що зберігається на пристрої, буде видалено. Модель обличчя також буде остаточно видалено без можливості відновлення. Ви не зможете використовувати фейс-контроль або відбиток пальця для автентифікації в додатках."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Ви втратите збережені дані, наприклад PIN-код, моделі обличчя й відбитка пальця.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Картки, для яких налаштовано безконтактну оплату, буде видалено.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Гаманці й інші додатки, які вимагають розблокування пристрою, можуть не працювати як слід."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Пароль захищає телефон у разі втрати чи викрадення"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Пароль захищає телефон у разі втрати чи викрадення.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Торкніться правого нижнього кута, щоб переглянути інші опції"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Швидкість курсора"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Жести сенсорної панелі: докладніше"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Перейти на головний екран"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Проведіть трьома пальцями вгору будь-де на сенсорній панелі"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Назад"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Цей додаток зможе споживати заряд акумулятора у фоновому режимі. Акумулятор може розрядитися швидше."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Видалити"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Скасувати"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Зарядити повністю"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Перевірте зарядний пристрій"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Докладніше про використання несумісних зарядних пристроїв"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Диспетчер заряду акумулятора"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"автоматично, заповнення, автозаповнення, дані, ключ доступу, пароль"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Змінити"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Відкрити"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Нічого не вибрано"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Переконайтеся, що додаток надійний&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Функція Автозаповнення Google&gt;%1$s&lt;/xliff:g&gt; використовує інформацію на екрані, щоб визначати поля для автозаповнення."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Використовувати додаток &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Відтепер тут зберігатимуться нові паролі, ключі доступу й інша інформація. Додаток &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; може використовувати інформацію на екрані, щоб визначати поля, які можна заповнити автоматично."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Пріоритетний сервіс для паролів, ключів доступу й автозаповнення"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Вимкнути всі сервіси?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Паролі, ключі доступу й інші збережені дані не будуть підставлятись автоматично, коли ви ввійдете в обліковий запис."</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Змінити бажаний сервіс на &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Відтепер тут зберігатимуться нові паролі, ключі доступу й інша інформація. Додаток &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; може використовувати інформацію на екрані, щоб визначати поля, які можна заповнити автоматично."</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Використовувати %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Вимкнути"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Змінити"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Одночасно можна ввімкнути не більше ніж 5 сервісів"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Вимкніть принаймні 1 сервіс, щоб додати інший"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s використовує інформацію на екрані, щоб визначати поля для автозаповнення."</string>
@@ -4753,10 +4769,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Приховати програвач"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Показати програвач"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"медіа"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Дозволяти розширення програмного забезпечення для камери"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Вмикає програмну реалізацію за умовчанням для розширених функцій камери, таких як відеографія для користувачів із вадами зору."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Увімкнеться Bluetooth"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Інтернет"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM-карти"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 76d573b..128b86c 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"غیر مقفل کرنے کے طریقے"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"آلہ کے اسکرین لاک جیسا"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"پرائیویٹ اسپیس کے لیے نیا لاک منتخب کریں؟"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"خودکار طور پر مقفل کریں"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"پرائیویٹ اسپیس کو خودکار طور پر مقفل کریں"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"پرائیویٹ اسپیس کو خودکار طور پر مقفل کریں"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"آپ اپنی پرائیویٹ اسپیس کو خودکار طور پر مقفل کر سکتے ہیں اگر آپ نے اپنے آلے کو کچھ عرصے سے استعمال نہیں کیا ہے"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"ہر بار جب آلہ مقفل ہوتا ہے"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 منٹ کی غیرفعالیت کے بعد"</string>
@@ -1881,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"مزید اختیارات کے لیے ٹچ پیڈ کے نیچے دائیں کونے پر تھپتھپائیں"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"پوائنٹر کی رفتار"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"ٹچ پیڈ کے اشارے کو جانیں"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"گھر جائیں"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"اپنے ٹچ پیڈ پر کہیں بھی تین انگلیوں سے اوپر کی طرف سوائپ کریں"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"واپس جائیں"</string>
@@ -2433,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"یہ ایپ پس منظر میں بیٹری استعمال کر سکے گی۔ آپ کی بیٹری توقع سے پہلے ختم ہو سکتی ہے۔"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"ہٹائیں"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"منسوخ کریں"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"مکمل چارج کریں"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"چارجنگ ایکسیسری چیک کریں"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"غیر موافق چارجنگ کے بارے میں مزید جانیں"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"بیٹری مینیجر"</string>
@@ -3837,7 +3841,7 @@
     <string name="usb_summary_MIDI_power" msgid="1184681982025435815">"‏MIDI اور بجلی کی فراہمی"</string>
     <string name="usb_summary_UVC_power" msgid="226810354412154061">"ویب کیم اور سپلائی پاور"</string>
     <string name="background_check_pref" msgid="5304564658578987535">"پس منظر کی جانچ"</string>
-    <string name="assist_access_context_title" msgid="5201495523514096201">"سکرین سے متن استعمال کریں"</string>
+    <string name="assist_access_context_title" msgid="5201495523514096201">"اسکرین سے ٹیکسٹ استعمال کریں"</string>
     <string name="assist_access_context_summary" msgid="6951814413185646275">"معاون ایپ کو سکرین مشمولات تک بطور متن رسائی کرنے کی اجازت دیں"</string>
     <string name="assist_access_screenshot_title" msgid="4395902231753643633">"اسکرین شاٹ استعمال کریں"</string>
     <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"معاون ایپ کو اسکرین کی ایک تصویر تک رسائی کرنے کی اجازت دیں"</string>
@@ -4319,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"آٹو، فل، آٹو فل، ڈیٹا، پاس کی، پاس ورڈ"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"تبدیل کریں"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"کھولیں"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"کوئی منتخب نہیں کیا گیا"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"‏&lt;b&gt;یہ یقینی بنائیں کہ آپ کو اس ایپ پر اعتماد ہے&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;‫%1$s&lt;/xliff:g&gt; آٹو فل کی جا سکنے والی چیزوں کی تعیین کیلئے آپ کی اسکرین پر موجود چیزوں کو استعمال کرتا ہے۔"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"‏‎&lt;b&gt;Use &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; نئے پاس ورڈز، پاس کیز اور دیگر معلومات اب سے یہاں محفوظ کی جائیں گی۔ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; آپ کی اسکرین پر موجود چیزوں کا استعمال کر سکتا ہے تاکہ یہ تعین کیا جا سکے کہ کیا آٹو فل ہو سکتا ہے۔"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"پاس ورڈز، پاس کیز اور آٹو فل کے لیے ترجیحی سروس"</string>
@@ -4330,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"‏&lt;b&gt;Turn off all services?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; آپ کے سائن ان کرنے پر پاس ورڈز، پاس کیز اور دیگر محفوظ کردہ معلومات آٹو فل کے لیے دستیاب نہیں ہوں گی"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"‏&lt;b&gt;اپنی ترجیحی سروس کو &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; میں تبدیل کریں، نئے پاس ورڈز، پاس کیز اور دیگر معلومات اب سے یہاں محفوظ کی جائیں گی۔ &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; آپ کی اسکرین پر موجود چیزوں کا استعمال کر سکتا ہے تاکہ یہ تعین کیا جا سکے کہ کیا آٹو فل ہو سکتا ہے"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"‏%1$s کا استعمال کرنا ہے؟"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"آف کریں"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"تبدیل کریں"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"آپ صرف 5 سروسز آن کر سکتے ہیں"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"دوسری سروس شامل کرنے کے لیے کم از کم 1 سروس آف کریں"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"‏%1$s آپ کی اسکرین پر موجود چیزوں کا استعمال یہ تعین کرنے کے لیے کرتا ہے کہ کیا آٹو فل کیا جا سکتا ہے۔"</string>
@@ -4762,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"کھلاڑی کو چھپائیں"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"کھلاڑی کو دکھائیں"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"میڈیا"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"کیمرا سافٹ ویئر ایکسٹینشنز کی اجازت دیں"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"‏Eyes Free ویڈیوگرافی جیسی جدید کیمرا کی خصوصیات کے ڈیفالٹ سافٹ ویئر کے نفاذ کو قابل بناتا ہے۔"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"بلوٹوتھ آن ہو جائے گا"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"انٹرنیٹ"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMs"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 75ab153..d1e186d 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Qulfni ochish usullari"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Qurilmaning qulflash usulidan foydalanish"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Maxfiy makon uchun yangi qulf yaratilsinmi?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Avtomatik qulflash"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Maxfiy makonni avtomatik qulflash"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Maxfiy makonni avtomatik qulflash"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Agar qurilmangizdan muayyan vaqt foydalanmasangiz, maxfiy makoningizni avtomatik ravishda qulflashingiz mumkin"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Har safar qurilma qulflanganda"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"5 daqiqa nofaollikdan keyin"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Grafik kalit"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN kod"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Parol"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Qurilma qulfini ochishning barcha turlari olib tashlansinmi?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Profilni himoyalash funksiyasi o‘chirilsinmi?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Telefoningiz yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Telefoningiz yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Bunda, qurilmangizda saqlangan barmoq izi modeli oʻchirib tashlanadi. Yuz modelingiz ham butunlay va xavfsiz oʻchirib tashlanadi. Endi yuzingiz yoki barmoq izingizdan ilovalar ichida autentifikatsiya uchun foydalana olmaysiz."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Telefoningiz yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"PIN kabi saqlangan axborotdan ayrilasiz.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kontaktsiz toʻlovga sozlangan kartalar olib tashlanadi.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Qurilmani blokdan chiqarishni talab qiluvchi hamyonlar va boshqa ilovalar yaxshi ishlamasligi mumkin."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Telefoningiz yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Bunda, qurilmangizda saqlangan barmoq izi modeli ham oʻchirib tashlanadi. Endi barmoq izingizdan ilovalar ichida autentifikatsiya uchun foydalana olmaysiz."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"PIN va barmoq izi modeli kabi saqlangan axborotdan ayrilasiz.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kontaktsiz toʻlovga sozlangan kartalar olib tashlanadi.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Qurilmani blokdan chiqarishni talab qiluvchi hamyonlar va boshqa ilovalar yaxshi ishlamasligi mumkin."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Telefoningiz yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Yuz modelingiz ham butunlay va xavfsiz oʻchirib tashlanadi. Endi yuzingizdan ilovalar ichida autentifikatsiya uchun foydalana olmaysiz."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"PIN va yuz modeli kabi saqlangan axborotdan ayrilasiz.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kontaktsiz toʻlovga sozlangan kartalar olib tashlanadi.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Qurilmani blokdan chiqarishni talab qiluvchi hamyonlar va boshqa ilovalar yaxshi ishlamasligi mumkin."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Telefoningiz yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Bunda, qurilmangizda saqlangan barmoq izi modeli oʻchirib tashlanadi. Yuz modelingiz ham butunlay va xavfsiz oʻchirib tashlanadi. Endi yuzingiz yoki barmoq izingizdan ilovalar ichida autentifikatsiya uchun foydalana olmaysiz."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"PIN, yuz va barmoq izi modeli kabi saqlangan axborotdan ayrilasiz.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Kontaktsiz toʻlovga sozlangan kartalar olib tashlanadi.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Qurilmani blokdan chiqarishni talab qiluvchi hamyonlar va boshqa ilovalar yaxshi ishlamasligi mumkin."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Telefoningiz yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Telefoningiz yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Pastki oʻng burchakka bossangiz, boshqa parametrlar ochiladi"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Kursor tezligi"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Sensorli panel ishoralari haqida"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Boshiga"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Sensorli panelning istalgan joyida uchta barmoq bilan tepaga suring"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Orqaga"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Bu ilova fonda batareya quvvatini ishlata oladi. Batareya quvvati kutilgandan tezroq tugashi mumkin."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Ha"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Bekor qilish"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Toʻliq quvvatlash"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Quvvatlash aksessuarini tekshiring"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Mos boʻlmagan quvvatlash haqida batafsil"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Batareya boshqaruvi"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"avtomatik, kiritish, avtomatik kiritish, maʼlumotlar, kalit, parol"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Oʻzgartirish"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Ochish"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Hech biri tanlanmadi"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Bu ilova ishonchli ekanini tekshiring&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ekraningizda nimani avtomatik kiritish kerakligini aniqlaydi."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ishlatilsinmi?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Endi yangi parollar, kalitlar va boshqa axborotlar shu yerda saqlanadi. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ekrandagi elementlar yordamida avtomatik kiritish mumkin narsalarni aniqlashi mumkin."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Parol, kirish kaliti va avtomatik kiritish uchun maqbul xizmat"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Barcha xizmatlar faolsizlantirilsinmi?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Hisobingizga kirganingizda parollar, kalitlar va boshqa saqlangan maʼlumotlar avtomatik toʻldirish uchun chiqmaydi"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Maqbul xizmatingiz quyidagiga oʻzgartirilsinmi: &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Yangi parollar, kalitlar va boshqa maʼlumotlar bundan buyon shu yerda saqlanadi. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ekrandagi elementlar yordamida avtomatik kiritish mumkin narsalarni aniqlashi mumkin"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"%1$s ishlatilsinmi?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Faolsizlantirish"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Oʻzgartirish"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Faqat 5 tagacha xizmatni yoqishingiz mumkin"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Boshqa xizmatni qoʻshish uchun kamida 1 ta eskisini faolsizlantiring"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s ekraningizda nimani avtomatik kiritish kerakligini aniqlaydi."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Pleyerni berkitish"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Pleyerni chiqarish"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"media"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Kamera dasturlari kengaytmalaridan foydalanishga ruxsat bering"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Eyes Free videografiyasi kabi qoʻshimcha kamera funksiyalarining standart dasturini yoqadi."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth yoqiladi"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM kartalar"</string>
@@ -5061,5 +5075,5 @@
     <string name="content_protection_preference_subpage_summary" msgid="3595621220981703364"></string>
     <string name="content_protection_preference_subpage_info" msgid="6890886357653365489"></string>
     <string name="accessibility_setup_password_complete" msgid="6358749253318369077">"Parol sozlandi"</string>
-    <string name="show_stylus_pointer_icon" msgid="1010583689203665786">"Kursorga olib borganda koʻrsatkichni koʻrsatish"</string>
+    <string name="show_stylus_pointer_icon" msgid="1010583689203665786">"Ustiga olib borganda kursorni koʻrsatish"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index f60bb5d..ab46b01 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Cách mở khoá"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Giống như phương thức khoá màn hình thiết bị"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Chọn một khoá mới cho không gian riêng tư?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Tự động khoá"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Tự động khoá không gian riêng tư"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Tự động khoá không gian riêng tư"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Bạn có thể tự động khoá không gian riêng tư của mình nếu không sử dụng thiết bị trong một khoảng thời gian"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Mỗi khi khoá thiết bị"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Sau 5 phút không hoạt động"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Hình mở khóa"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"Mã PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Mật khẩu"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Xoá tất cả các loại phương thức mở khoá thiết bị?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Xóa tính năng bảo vệ hồ sơ?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Hình mở khóa giúp bảo vệ điện thoại của bạn trong trường hợp bị mất hoặc bị đánh cắp"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Hình mở khóa giúp bảo vệ điện thoại của bạn trong trường hợp bị mất hoặc bị đánh cắp.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Thao tác xóa hình mở khóa sẽ xóa mẫu vân tay lưu trên thiết bị của bạn. Mẫu khuôn mặt của bạn cũng sẽ bị xóa vĩnh viễn theo cách an toàn. Bạn sẽ không thể dùng khuôn mặt hoặc vân tay của mình để xác thực trong các ứng dụng."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Mã PIN giúp bảo vệ điện thoại của bạn trong trường hợp bị mất hoặc bị đánh cắp"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Bạn sẽ mất dữ liệu đã lưu, chẳng hạn như mã PIN.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Những thẻ được thiết lập tính năng thanh toán không tiếp xúc sẽ bị xoá.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Ví và các ứng dụng khác (cần mở khoá thiết bị) có thể không hoạt động bình thường."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Mã PIN giúp bảo vệ điện thoại của bạn trong trường hợp bị mất hoặc bị đánh cắp.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Thao tác xóa mã PIN cũng sẽ xóa mẫu vân tay lưu trên thiết bị của bạn. Bạn sẽ không thể dùng vân tay của mình để xác thực trong các ứng dụng."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Bạn sẽ mất dữ liệu đã lưu, chẳng hạn như mã PIN và mẫu vân tay.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Những thẻ được thiết lập tính năng thanh toán không tiếp xúc sẽ bị xoá.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Ví và các ứng dụng khác (cần mở khoá thiết bị) có thể không hoạt động bình thường."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Mã PIN giúp bảo vệ điện thoại của bạn trong trường hợp bị mất hoặc bị đánh cắp.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Mẫu khuôn mặt của bạn cũng sẽ bị xóa vĩnh viễn theo cách an toàn. Bạn sẽ không thể dùng khuôn mặt của mình để xác thực trong các ứng dụng."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Bạn sẽ mất dữ liệu đã lưu, chẳng hạn như mã PIN và mẫu khuôn mặt.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Những thẻ được thiết lập tính năng thanh toán không tiếp xúc sẽ bị xoá.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Ví và các ứng dụng khác (cần mở khoá thiết bị) có thể không hoạt động bình thường."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Mã PIN giúp bảo vệ điện thoại của bạn trong trường hợp bị mất hoặc bị đánh cắp.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Thao tác xóa mã PIN sẽ xóa mẫu vân tay lưu trên thiết bị của bạn. Mẫu khuôn mặt của bạn cũng sẽ bị xóa vĩnh viễn theo cách an toàn. Bạn sẽ không thể dùng khuôn mặt hoặc vân tay của mình để xác thực trong các ứng dụng."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Bạn sẽ mất dữ liệu đã lưu, chẳng hạn như mã PIN, mẫu khuôn mặt và vân tay.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Những thẻ được thiết lập tính năng thanh toán không tiếp xúc sẽ bị xoá.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Ví và các ứng dụng khác (cần mở khoá thiết bị) có thể không hoạt động bình thường."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Mật khẩu giúp bảo vệ điện thoại của bạn trong trường hợp bị mất hoặc bị đánh cắp"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Mật khẩu giúp bảo vệ điện thoại của bạn trong trường hợp bị mất hoặc bị đánh cắp.<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Nhấn vào góc cuối bên phải bàn di chuột để xem tuỳ chọn khác"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Tốc độ con trỏ"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Tìm hiểu về cử chỉ ở bàn di chuột"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Chuyển đến màn hình chính"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Dùng 3 ngón tay vuốt lên vị trí bất kỳ trên bàn di chuột"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Quay lại"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Ứng dụng này có thể sử dụng pin trong nền. Pin có thể hết sớm hơn dự kiến."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Xóa"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Hủy"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Sạc đến khi đầy"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Hãy kiểm tra phụ kiện sạc"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Tìm hiểu thêm về chế độ sạc không tương thích"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Trình quản lý pin"</string>
@@ -3830,7 +3845,7 @@
     <string name="assist_access_context_summary" msgid="6951814413185646275">"Cho phép ứng dụng trợ lý truy cập nội dung trên màn hình dưới dạng văn bản"</string>
     <string name="assist_access_screenshot_title" msgid="4395902231753643633">"Sử dụng ảnh chụp màn hình"</string>
     <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Cho phép ứng dụng trợ lý truy cập hình ảnh màn hình"</string>
-    <string name="assist_flash_title" msgid="5449512572885550108">"Màn hình nháy"</string>
+    <string name="assist_flash_title" msgid="5449512572885550108">"Nhấp nháy màn hình"</string>
     <string name="assist_flash_summary" msgid="3032289860177784594">"Nhấp nháy các cạnh màn hình khi ứng dụng trợ lý truy cập văn bản từ màn hình hoặc ảnh chụp màn hình"</string>
     <string name="assist_footer" msgid="8248015363806299068">"Các ứng dụng trợ lý có thể dựa vào thông tin trên màn hình bạn đang xem để giúp bạn làm nhiều việc. Một số ứng dụng hỗ trợ cả dịch vụ nhập bằng giọng nói và trình chạy để hỗ trợ bạn toàn diện hơn."</string>
     <string name="average_memory_use" msgid="717313706368825388">"Sử dụng bộ nhớ trung bình"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"tự động, điền, tự động điền, dữ liệu, khoá truy cập, mật khẩu"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Thay đổi"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Mở"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Chưa chọn mục nào"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Hãy đảm bảo bạn tin tưởng ứng dụng này&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; sử dụng thông tin trên màn hình để xác định nội dung nào có thể được tự động điền."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Sử dụng &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Mật khẩu mới, khoá truy cập mới, cũng như các thông tin khác sẽ được lưu ở đây kể từ bây giờ. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; có thể dùng thông tin trên màn hình của bạn để xác định thông tin nào có thể tự động điền."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Dịch vụ ưu tiên cho mật khẩu, khoá truy cập và tính năng tự động điền"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Tắt tất cả dịch vụ?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Tính năng tự động điền sẽ không sử dụng được mật khẩu, khoá truy cập cũng như thông tin đã lưu khác khi bạn đăng nhập"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;Thay đổi dịch vụ bạn ưu tiên thành &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Từ nay, mật khẩu mới, khoá truy cập mới cũng như thông tin khác sẽ được lưu tại đây. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; có thể dùng nội dung trên màn hình của bạn để xác định thông tin nào có thể tự động điền"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Sử dụng %1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Tắt"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Thay đổi"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Bạn chỉ bật được 5 dịch vụ"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Hãy tắt ít nhất là 1 dịch vụ để có thể thêm 1 dịch vụ khác"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s sử dụng nội dung trên màn hình của bạn để xác định thông tin có thể được tự động điền."</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Ẩn trình phát"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Hiện trình phát"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"nội dung nghe nhìn"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Cho phép tiện ích phần mềm camera"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Cho phép mặc định triển khai các tính năng nâng cao của camera, chẳng hạn như tính năng nhiếp ảnh Eyes Free."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"Bluetooth sẽ bật"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 451c658..6781916 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"解锁方式"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"与设备的屏幕锁定方式相同"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"选择用于锁定私密空间的新方式？"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"自动锁定"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"自动锁定私密空间"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"自动锁定私密空间"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"设备可在闲置一段时间后自动锁定私密空间"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"每次设备锁定时"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"无操作 5 分钟后"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"图案"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN 码"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"密码"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"移除所有类型的设备解锁方式？"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"要移除个人资料保护功能吗？"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"手机丢失或被盗时，解锁图案可保护手机中的数据"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"手机丢失或被盗时，解锁图案可保护手机中的数据。<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>这样做会删除您的设备上存储的指纹模型。系统也会安全地永久删除您的脸部模型。您将无法使用面孔或指纹在应用内验证自己的身份。"</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"手机丢失或被盗时，PIN 码可保护手机中的数据"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"您将丢失已保存的数据，比如您的 PIN 码。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>为进行感应式付款而设置的银行卡将遭到移除。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>“钱包”和其他要求解锁设备才能使用的应用可能不会正常运作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"手机丢失或被盗时，PIN 码可保护手机中的数据。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>这样做也会删除您的设备上存储的指纹模型。您将无法使用指纹在应用内验证自己的身份。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"您将丢失已保存的数据，比如您的 PIN 码和指纹模型。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>为进行感应式付款而设置的银行卡将遭到移除。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>“钱包”和其他要求解锁设备才能使用的应用可能不会正常运作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"手机丢失或被盗时，PIN 码可保护手机中的数据。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>系统也会安全地永久删除您的脸部模型。您将无法使用面孔在应用内验证自己的身份。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"您将丢失已保存的数据，比如您的 PIN 码和脸部模型。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>为进行感应式付款而设置的银行卡将遭到移除。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>“钱包”和其他要求解锁设备才能使用的应用可能不会正常运作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"手机丢失或被盗时，PIN 码可保护手机中的数据。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>这样做会删除您的设备上存储的指纹模型。系统也会安全地永久删除您的脸部模型。您将无法使用面孔或指纹在应用内验证自己的身份。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"您将丢失已保存的数据，比如您的 PIN 码、脸部模型和指纹模型。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>为进行感应式付款而设置的银行卡将遭到移除。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>“钱包”和其他要求解锁设备才能使用的应用可能不会正常运作。"</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"手机丢失或被盗时，密码可保护手机中的数据"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"手机丢失或被盗时，密码可保护手机中的数据。<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"点按触控板的右下角即可查看更多选项"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"指针速度"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"了解触控板手势"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"前往主屏幕"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"在触控板上的任意位置用三根手指向上滑动"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"返回"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"此应用将能够在后台消耗电量。这可能会导致电量耗尽速度比预期更快。"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"移除"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"取消"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"充满电"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"检查充电配件"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"详细了解不兼容的充电装置"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"电池管理器"</string>
@@ -3827,12 +3842,12 @@
     <string name="usb_summary_UVC_power" msgid="226810354412154061">"摄像头和为其他设备充电"</string>
     <string name="background_check_pref" msgid="5304564658578987535">"后台检查"</string>
     <string name="assist_access_context_title" msgid="5201495523514096201">"使用屏幕上的文字内容"</string>
-    <string name="assist_access_context_summary" msgid="6951814413185646275">"允许助手应用获取屏幕上的文字内容"</string>
+    <string name="assist_access_context_summary" msgid="6951814413185646275">"允许辅助应用获取屏幕上的文字内容"</string>
     <string name="assist_access_screenshot_title" msgid="4395902231753643633">"使用屏幕截图"</string>
-    <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"允许助手应用使用屏幕截图"</string>
+    <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"允许辅助应用使用屏幕截图"</string>
     <string name="assist_flash_title" msgid="5449512572885550108">"闪烁屏幕"</string>
-    <string name="assist_flash_summary" msgid="3032289860177784594">"当助手应用获取屏幕/屏幕截图上的文字时，让屏幕边缘闪烁"</string>
-    <string name="assist_footer" msgid="8248015363806299068">"助手应用可根据您当前浏览的屏幕上的内容为您提供帮助。某些应用同时支持启动器和语音输入服务，可为您提供更全面的协助。"</string>
+    <string name="assist_flash_summary" msgid="3032289860177784594">"当辅助应用获取屏幕/屏幕截图上的文字时，让屏幕边缘闪烁"</string>
+    <string name="assist_footer" msgid="8248015363806299068">"辅助应用可根据您当前浏览的屏幕上的内容为您提供帮助。某些应用同时支持启动器和语音输入服务，可为您提供更全面的协助。"</string>
     <string name="average_memory_use" msgid="717313706368825388">"平均内存使用量"</string>
     <string name="maximum_memory_use" msgid="2171779724001152933">"最高内存使用量"</string>
     <string name="memory_usage" msgid="5594133403819880617">"内存使用量"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"自动, 填充, 自动填充, 数据, 通行密钥, 密码, auto, fill, autofill, data, passkey, password"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"更改"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"打开"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"未选择任何内容"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;请确认这是您信任的应用&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt;会根据您的屏幕内容判断可自动填充哪些内容。"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;要使用&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;吗？&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;从现在起，系统会将新密码、通行密钥和其他信息保存在此处。&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;可能会根据屏幕上的内容判断可以自动填充的内容。"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"密码、通行密钥和自动填充方面的首选服务"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;关闭所有服务？&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;密码、通行密钥和其他已存信息将不可用于登录时自动填充"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;将您的首选服务更改为&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;？&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;从现在起，新的密码、通行密钥和其他信息将保存在这里。&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;可能会根据屏幕上的内容判断可以自动填充的信息"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"使用%1$s？"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"关闭"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"更改"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"您只能开启 5 项服务"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"至少关闭 1 项服务才能添加另 1 项服务"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"%1$s会根据屏幕上的内容判断可以自动填充的内容。"</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"隐藏播放器"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"显示播放器"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"媒体"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"允许相机软件扩展程序"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"允许默认软件实现高级相机功能，例如 Eyes Free 录像。"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"蓝牙将开启"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"互联网"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM 卡"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 3022e31..89d5e37 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"解鎖方法"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"與裝置的螢幕鎖定相同"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"要為私人空間選擇新的鎖定方式嗎？"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"自動上鎖"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"自動鎖定私人空間"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"自動鎖定私人空間"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"裝置可在閒置一段時間後自動鎖定私人空間"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"每當裝置鎖定"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"閒置 5 分鐘後"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"圖案"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN 碼"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"密碼"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"要移除所有裝置解鎖方式嗎？"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"要移除設定檔保護功能嗎？"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"手機遺失或被盜時，圖案可保護手機中的資料"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"手機遺失或被盜時，圖案可保護手機中的資料。<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>這麼做會刪除裝置上儲存的指紋模型。系統亦會妥善地將你的面部模型永久刪除。你之後將無法使用面孔或指紋在應用程式中驗證身分。"</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"手機遺失或被盜時，PIN 可保護手機中的資料"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"你將遺失已儲存的資料，例如 PIN。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>系統將移除已設定感應式付款的付款卡。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>「錢包」和其他需要解鎖裝置的應用程式可能無法正常運作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"手機遺失或被盜時，PIN 可保護手機中的資料。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>這麼做亦會刪除裝置上儲存的指紋模型。你之後將無法使用指紋在應用程式中驗證身分。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"你將遺失已儲存的資料，例如 PIN 和指紋模型。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>系統將移除已設定感應式付款的付款卡。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>「錢包」和其他需要解鎖裝置的應用程式可能無法正常運作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"手機遺失或被盜時，PIN 可保護手機中的資料。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>系統亦會妥善地將你的面部模型永久刪除。你之後將無法使用面孔在應用程式中驗證身分。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"你將遺失已儲存的資料，例如 PIN 和面部模型。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>系統將移除已設定感應式付款的付款卡。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>「錢包」和其他需要解鎖裝置的應用程式可能無法正常運作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"手機遺失或被盜時，PIN 可保護手機中的資料。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>這麼做會刪除裝置上儲存的指紋模型。系統亦會妥善地將你的面部模型永久刪除。你之後將無法使用面孔或指紋在應用程式中驗證身分。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"你將遺失已儲存的資料，例如 PIN、面部模型和指紋模型。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>系統將移除已設定感應式付款的付款卡。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>「錢包」和其他需要解鎖裝置的應用程式可能無法正常運作。"</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"手機遺失或被盜時，密碼可保護手機中的資料"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"手機遺失或被盜時，密碼可保護手機中的資料。<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"輕按觸控板右下角，即可查看更多選項"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"游標速度"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"學習觸控板手勢"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"返回主畫面"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"用三隻手指在觸控板的任何位置向上滑動"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"返回"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"此應用程式會在背景使用電量。你的電池電量可能會比預期更快耗盡。"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"移除"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"取消"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"讓裝置完全充電"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"檢查充電配件"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"進一步瞭解不兼容的變壓器充電"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"電池管理工具"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"自動, 填入, 自動填入, 資料, 密鑰, 密碼"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"變更"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"開啟"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"未選取任何項目"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;請確定你信任此應用程式&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; 應用程式會根據你畫面上的內容判斷可自動填入的資料。"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;要使用「&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;」嗎？&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; 從現在起，新的密碼、密鑰和其他資料都會儲存在這裡。「&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;」可能會根據畫面內容判斷要自動填入的資料。"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"密碼、密鑰和自動填入的偏好服務"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;要關閉所有服務嗎？&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;系統將無法在你登入時提供密碼、密鑰和其他已儲存的資料"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;將偏好的服務變更為「&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;」。從現在起，系統會將新密碼、密鑰和其他資訊儲存在此應用程式。「&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;」可能會根據畫面內容判斷要自動填入的資料"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"要使用「%1$s」嗎？"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"關閉"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"變更"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"你只可同時開啟 5 項服務"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"如要新增其他服務，請關閉至少 1 項服務"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"「%1$s」會根據畫面內容判斷要自動填入的資料。"</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"隱藏播放器"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"顯示播放器"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"媒體"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"允許相機軟件擴充程式"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"允許導入預設軟件的進階相機功能，例如 Eyes Free 錄影。"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"系統將開啟藍牙"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"互聯網"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM 卡"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index f3df690..ac6bfbb 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"解鎖方式"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"與裝置的螢幕鎖定一致"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"要選擇新的私人空間鎖定方式嗎？"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"自動鎖定"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"自動鎖定私人空間"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"自動鎖定私人空間"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"裝置可在閒置一段時間後自動鎖定私人空間"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"每當裝置鎖定"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"閒置 5 分鐘後"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"圖案"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN 碼"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"密碼"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"要移除所有類型的裝置解鎖方法嗎？"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"要移除設定檔保護功能嗎？"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"手機遺失或遭竊時，解鎖圖案可保護手機中的資料"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"手機遺失或遭竊時，解鎖圖案可保護手機中的資料。<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>這麼做會刪除裝置上儲存的指紋模型。系統也會安全地將你的臉部模型永久刪除。你之後將無法使用臉孔或指紋在應用程式中驗證身分。"</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"手機遺失或遭竊時，PIN 碼可保護手機中的資料"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"這麼做會移除 PIN 碼等已儲存的資料。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>設定用於感應支付的卡片將遭到移除。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Google 錢包及其他需解鎖裝置才能使用的應用程式可能無法正常運作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"手機遺失或遭竊時，PIN 碼可保護手機中的資料。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>這麼做也會刪除裝置上儲存的指紋模型。你之後將無法使用指紋在應用程式中驗證身分。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"這麼做會移除 PIN 碼和指紋模型等已儲存的資料。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>設定用於感應支付的卡片將遭到移除。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Google 錢包及其他需解鎖裝置才能使用的應用程式可能無法正常運作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"手機遺失或遭竊時，PIN 碼可保護手機中的資料。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>系統也會安全地將你的臉部模型永久刪除。你之後將無法使用臉孔在應用程式中驗證身分。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"這麼做會移除 PIN 碼和臉部模型等已儲存的資料。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>設定用於感應支付的卡片將遭到移除。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Google 錢包及其他需解鎖裝置才能使用的應用程式可能無法正常運作。"</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"手機遺失或遭竊時，PIN 碼可保護手機中的資料。<xliff:g id="EMPTY_LINE">
 
 </xliff:g>這麼做會刪除裝置上儲存的指紋模型。系統也會安全地將你的臉部模型永久刪除。你之後將無法使用臉孔或指紋在應用程式中驗證身分。"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"這麼做會移除 PIN 碼、臉部和指紋模型等已儲存的資料。<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>設定用於感應支付的卡片將遭到移除。<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Google 錢包及其他需解鎖裝置才能使用的應用程式可能無法正常運作。"</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"手機遺失或遭竊時，密碼可保護手機中的資料"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"手機遺失或遭竊時，密碼可保護手機中的資料。<xliff:g id="EMPTY_LINE">
 
@@ -1870,6 +1880,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"在觸控板上輕觸右下角即可查看更多選項"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"游標速度"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"學習觸控板手勢"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"返回主畫面"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"在觸控板任一處使用三指向上滑動"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"返回"</string>
@@ -2422,7 +2436,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"這個應用程式將會在背景耗用電量。你的電池電力可能會比預期更快耗盡。"</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"移除"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"取消"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"將電池充飽"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"請檢查充電配件"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"進一步瞭解不相容的變壓器充電"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Battery Manager"</string>
@@ -2506,11 +2521,11 @@
     <string name="battery_app_usage_since_last_full_charge_to" msgid="4339201995118102114">"上次充飽電後至<xliff:g id="SLOT_TIMESTAMP">%s</xliff:g> 的應用程式耗電量"</string>
     <string name="battery_usage_total_less_than_one_minute" msgid="1035425863251685509">"總計：不到 1 分鐘"</string>
     <string name="battery_usage_background_less_than_one_minute" msgid="3957971442554437909">"背景：不到 1 分鐘"</string>
-    <string name="battery_usage_screen_time_less_than_one_minute" msgid="2911989465891679033">"裝置使用時間：少於 1 分鐘"</string>
+    <string name="battery_usage_screen_time_less_than_one_minute" msgid="2911989465891679033">"螢幕時間：少於 1 分鐘"</string>
     <string name="power_usage_time_less_than_one_minute" msgid="8407404329381010144">"不到 1 分鐘"</string>
     <string name="battery_usage_for_total_time" msgid="8402254046930910905">"總計：<xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="battery_usage_for_background_time" msgid="9109637210617095188">"背景：<xliff:g id="TIME">%s</xliff:g>"</string>
-    <string name="battery_usage_screen_time" msgid="3973865893520804115">"裝置使用時間：<xliff:g id="TIME">%s</xliff:g>"</string>
+    <string name="battery_usage_screen_time" msgid="3973865893520804115">"螢幕時間：<xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="battery_usage_screen_footer_empty" msgid="3301144846133808193">"充飽電後，系統會在幾個小時內提供電池用量資料"</string>
     <string name="battery_usage_chart_label_now" msgid="4598282721949430165">"現在"</string>
     <string name="battery_usage_timestamps_hyphen" msgid="7401188432989043905">"<xliff:g id="FROM_TIMESTAMP">%1$s</xliff:g> - <xliff:g id="TO_TIMESTAMP">%2$s</xliff:g>"</string>
@@ -2522,8 +2537,8 @@
     <string name="battery_level_percentage" msgid="1433178290838842146">"電池電量百分比：從 <xliff:g id="START_PERCENTAGE">%1$s</xliff:g> 到 <xliff:g id="END_PERCENTAGE">%2$s</xliff:g>"</string>
     <string name="battery_usage_breakdown_title_since_last_full_charge" msgid="435006273323199906">"上次充飽電後的電池用量"</string>
     <string name="battery_usage_breakdown_title_for_slot" msgid="4823179483667671406">"<xliff:g id="SLOT">%s</xliff:g>的電池用量"</string>
-    <string name="screen_time_category_last_full_charge" msgid="8856908320256057753">"自上次充飽電後的裝置使用時間"</string>
-    <string name="screen_time_category_for_slot" msgid="8287722270554654959">"<xliff:g id="SLOT">%s</xliff:g>的裝置使用時間"</string>
+    <string name="screen_time_category_last_full_charge" msgid="8856908320256057753">"自上次充飽電後的螢幕時間"</string>
+    <string name="screen_time_category_for_slot" msgid="8287722270554654959">"<xliff:g id="SLOT">%s</xliff:g>的螢幕時間"</string>
     <string name="battery_usage_spinner_view_by_apps" msgid="8769276544072098082">"應用程式"</string>
     <string name="battery_usage_spinner_view_by_systems" msgid="7904104223212160541">"系統"</string>
     <string name="battery_usage_less_than_percent" msgid="5873099028895001082">"&lt; <xliff:g id="PERCENTAGE">%1$s</xliff:g>"</string>
@@ -3769,7 +3784,7 @@
     <string name="apps_storage" msgid="643866814746927111">"應用程式儲存空間"</string>
     <string name="usage_access" msgid="5487993885373893282">"使用記錄存取權"</string>
     <string name="permit_usage_access" msgid="179630895262172674">"允許存取使用記錄"</string>
-    <string name="time_spent_in_app_pref_title" msgid="25327097913383330">"裝置使用時間"</string>
+    <string name="time_spent_in_app_pref_title" msgid="25327097913383330">"螢幕時間"</string>
     <string name="usage_access_description" msgid="8547716253713890707">"具有使用記錄存取權的應用程式可以追蹤你使用的其他應用程式與頻率，以及你的電信業者、語言設定和其他詳細資料。"</string>
     <string name="memory_settings_title" msgid="6582588646363308430">"記憶體"</string>
     <string name="always_running" msgid="9012705720688200252">"一律執行 (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string>
@@ -4308,8 +4323,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"自動、填入、自動填入、資料、密碼金鑰、密碼"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"變更"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"開啟"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"未選取任何項目"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;請確定這是你信任的應用程式&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; 會根據畫面上顯示的內容判斷要自動填入哪些資訊。"</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;要使用「&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;」嗎？&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; 從現在起，新的密碼、密碼金鑰和其他資訊都會儲存在這裡。「&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;」可能會根據畫面內容判斷可自動填入的資訊。"</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"密碼、密碼金鑰和自動填入的偏好服務"</string>
@@ -4319,6 +4333,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;要關閉所有服務嗎？&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;系統將無法在你登入時提供密碼、密碼金鑰和其他已儲存的資訊"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&lt;b&gt;將偏好服務變更為「&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;」?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt;從現在起，系統會將新密碼、密碼金鑰和其他資訊儲存在這個應用程式。「&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;」可能會根據畫面內容判斷可自動填入的資訊"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"要使用「%1$s」嗎？"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"關閉"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"變更"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"最多只能開啟 5 項服務"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"關閉至少 1 項服務並新增其他服務"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"「%1$s」會根據畫面內容判斷要自動填入的資訊。"</string>
@@ -4751,10 +4767,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"隱藏播放器"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"顯示播放器"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"媒體"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"允許相機軟體擴充功能"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"允許導入預設軟體的進階相機功能，例如 Eyes Free 錄影。"</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"系統將開啟藍牙"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"網際網路"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIM 卡"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index e6f94c3..dcf5b31 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -561,8 +561,7 @@
     <string name="private_space_category_ways_to_unlock" msgid="4356631225316950046">"Izindlela zokuvula"</string>
     <string name="private_space_screen_lock_summary" msgid="394837965365561070">"Ifana nokukhiya isikrini sedivayisi"</string>
     <string name="private_space_new_lock_title" msgid="9056139964133004094">"Khetha isikhiya esisha wendawo engasese?"</string>
-    <string name="private_space_auto_lock_title" msgid="4757097802686131305">"Khiya ngokuzenzakalelayo"</string>
-    <string name="private_space_auto_lock_page_title" msgid="2993714305725968632">"Khiya indawo engasese ngokuzenzakalelayo"</string>
+    <string name="private_space_auto_lock_title" msgid="8663409382910601261">"Khiya indawo engasese ngokuzenzekelayo"</string>
     <string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Ungakhiya indawo yakho engasese ngokuzenzakalelayo uma ungakaze usebenzise idivayisi yakho okwesikhathi esithile"</string>
     <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Njalo lapho idivayisi ikhiya"</string>
     <string name="private_space_auto_lock_after_inactivity" msgid="1748673030841528649">"Ngemva kwemizuzu engu-5 yokungenzi lutho"</string>
@@ -678,8 +677,7 @@
     <string name="unlock_set_unlock_mode_pattern" msgid="1926480143883094896">"Iphathini"</string>
     <string name="unlock_set_unlock_mode_pin" msgid="9028659554829888373">"PIN"</string>
     <string name="unlock_set_unlock_mode_password" msgid="8810609692771987513">"Iphasiwedi"</string>
-    <!-- no translation found for unlock_disable_frp_warning_title (2545569051372893686) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_title" msgid="2545569051372893686">"Susa zonke izinhlobo zokuvula idivayisi?"</string>
     <string name="unlock_disable_frp_warning_title_profile" msgid="1005284289723910461">"Susa ukuvikelwa kwedatha yephrofayela?"</string>
     <string name="unlock_disable_frp_warning_content_pattern" msgid="6246242612158828147">"Iphethini ivikela ifoni yakho uma ilahlekile noma intshontshiwe"</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2259825377085781801">"Iphethini ivikela ifoni yakho uma ilahlekile noma intshontshiwe.<xliff:g id="EMPTY_LINE">
@@ -692,23 +690,35 @@
 
 </xliff:g>Lokhu kusula imodeli yesigxivizo somunwe egcinwe kudivayisi yakho. Imodeli yakho yobuso nayo izosulwa ingunaphakade futhi ngokuphephile. Ngeke uze ukwazi ukusebenzisa ubuso bakho noma izigxivizo zeminwe ukufakazela ubuqiniso kuma-app."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="122154942944422284">"Iphinikhodi ivikela ifoni yakho uma ilahlekile noma intshontshiwe"</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_authbound_keys (6497861740382402784) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_authbound_keys" msgid="6497861740382402784">"Uzolahlekelwa yidatha elondoloziwe Njengephinikhodi yakho.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Amakhadi asethelwe ukukhokha ngaphandle kokuthinta azosuswa.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Ama-wallet namanye ama-app adinga ukuvulwa kwedivayisi angase angasebenzi kahle."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="983373874470746066">"Iphinikhodi ivikela ifoni yakho uma ilahlekile noma intshontshiwe.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Lokhu kusula nemodeli yezigxivizo zeminwe ezigcinwe kudivayisi yakho. Ngeke ukwazi ukusebenzisa izigxivizo zakho zeminwe ekufakazeleni ubuqiniso kuma-app."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys (8930057076658360799) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_authbound_keys" msgid="8930057076658360799">"Uzolahlekelwa yidatha elondoloziwe Njengephinikhodi yakho nesigxivizo somunwe.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Amakhadi asethelwe ukukhokha ngaphandle kokuthinta azosuswa.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Ama-wallet namanye ama-app adinga ukuvulwa kwedivayisi angase angasebenzi kahle."</string>
     <string name="unlock_disable_frp_warning_content_pin_face" msgid="5607150515413131761">"Iphinikhodi ivikela ifoni yakho uma ilahlekile noma intshontshiwe.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Imodeli yakho yobuso nayo izosuswa unomphela futhi ngokuphephile. Ngeke ukwazi ukusebenzisa ubuso bakho ukufakazela ubuqinisio kuma-app."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_authbound_keys (979399855891561038) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_authbound_keys" msgid="979399855891561038">"Uzolahlekelwa idatha elondoloziwe Njengephinikhodi yakho nemodeli yobuso.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Amakhadi asethelwe ukukhokha ngaphandle kokuthinta azosuswa.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Ama-wallet namanye ama-app adinga ukuvulwa kwedivayisi angase angasebenzi kahle."</string>
     <string name="unlock_disable_frp_warning_content_pin_face_fingerprint" msgid="1821792325159866312">"Iphinikhodi ivikela ifoni yakho uma ilahlekile noma intshontshiwe.<xliff:g id="EMPTY_LINE">
 
 </xliff:g>Lokhu kusula imodeli yezigxivizo zeminwe ezigcinwe kudivayisi yakho. Imodeli yakho yobuso nayo izosulwa ingunaphakade futhi ngokuphephile. Ngeke uze ukwazi ukusebenzisa ubuso bakho noma izigxivizo zeminwe ukufakazela ubuqiniso kuma-app."</string>
-    <!-- no translation found for unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys (7019955731206729909) -->
-    <skip />
+    <string name="unlock_disable_frp_warning_content_pin_face_fingerprint_authbound_keys" msgid="7019955731206729909">"Uzolahlekelwa yidatha elondoloziwe Njengephinikhodi yakho, ubuso nesigxivizo somunwe.<xliff:g id="EMPTY_LINE_0">
+
+</xliff:g>Amakhadi asethelwe ukukhokha ngaphandle kokuthinta azosuswa.<xliff:g id="EMPTY_LINE_1">
+
+</xliff:g>Ama-wallet namanye ama-app adinga ukuvulwa kwedivayisi angase angasebenzi kahle."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="6422723907917376210">"Iphasiwedi ivikela ifoni yakho uma ilahlekile noma intshontshiwe"</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="8899452884016354856">"Iphasiwedi ivikela ifoni yakho uma ilahlekile noma intshontshiwe.<xliff:g id="EMPTY_LINE">
 
@@ -1871,6 +1881,10 @@
     <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Thepha ekhoneni elingezansi kwesokudla lephedi yokuthinta ukuze uthole okungakhethwa kukho okwengeziwe"</string>
     <string name="trackpad_pointer_speed" msgid="7786579408631352625">"Ijubane lesikhombi"</string>
     <string name="trackpad_touch_gesture" msgid="8641725062131922497">"Funda ukunyakaza kwephedi lokuthinta"</string>
+    <!-- no translation found for keywords_touchpad (8159846254066666032) -->
+    <skip />
+    <!-- no translation found for keywords_trackpad_bottom_right_tap (1285062446073929305) -->
+    <skip />
     <string name="gesture_title_go_home" msgid="3682238648647225933">"Iya ekhasini lokuqala"</string>
     <string name="gesture_summary_go_home" msgid="6409031586904205741">"Swayiphela phezulu ngeminwe emithathu noma kuphi kuphedi yakho yokuthinta"</string>
     <string name="gesture_title_go_back" msgid="6619462058488419802">"Iya emuva"</string>
@@ -2423,7 +2437,8 @@
     <string name="battery_tip_unrestrict_app_dialog_message" msgid="215449637818582819">"Lolu hlelo lokusebenza luzokwazi ukusebenzisa ibhethri ngemuva. Ibhethri lakho lingaphela ngokushesha kunokulindelekile."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="7940183167721998470">"Susa"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="4968135709160207507">"Khansela"</string>
-    <string name="battery_tip_charge_to_full_button" msgid="6701709034348116261">"Shaja ugcwalise"</string>
+    <!-- no translation found for battery_tip_charge_to_full_button (9172893341338732733) -->
+    <skip />
     <string name="battery_tip_incompatible_charging_title" msgid="1567827436103364999">"Hlola insiza yokushaja"</string>
     <string name="battery_tip_incompatible_charging_content_description" msgid="355668467640367701">"Funda kabanzi mayelana nokushaja okungahambelani"</string>
     <string name="smart_battery_manager_title" msgid="3677620516657920364">"Isiphathi sebhethri"</string>
@@ -4309,8 +4324,7 @@
     <string name="credman_autofill_keywords" msgid="701180623776848914">"okuzenzakalelayo, gcwalisa, gcwalisa ngokuzenzakalelayo, idatha, ukhiye wokudlula, iphasiwedi"</string>
     <string name="credman_button_change" msgid="4072629639218503790">"Shintsha"</string>
     <string name="credman_button_open" msgid="7519871964170816850">"Vula"</string>
-    <!-- no translation found for credman_app_list_preference_none (2509646651254971448) -->
-    <skip />
+    <string name="credman_app_list_preference_none" msgid="2509646651254971448">"Akukho okukhethiwe"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Qiniseka ukuthi wethemba lolu hlelo lokusebenza&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; isebenzisa okusesikrinini sakho ukunquma okungagcwaliswa ngokuzenzakalela."</string>
     <string name="credman_autofill_confirmation_message" msgid="843829628024668466">"&lt;b&gt;Sebenzisa i-&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Amaphasiwedi amasha, okhiye bokudlula, nolunye ulwazi kuzolondolozwa lapha kusukela manje kuqhubeke. I-&lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ingase isebenzise okusesikrinini sakho ukuze inqume ukuthi yini engagcwaliswa ngokuzenzakalela."</string>
     <string name="credman_picker_title" msgid="8442086614222006564">"Isevisi ekhethwayo yamaphasiwedi, okhiye bokudlula amp;nokugcwalisa okuzenzakalelayo"</string>
@@ -4320,6 +4334,8 @@
     <string name="credman_confirmation_message_new_ui" msgid="6126274509951156460">"&lt;b&gt;Vala wonke amasevisi?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Amaphasiwedi, okhiye bokudlula, nolunye ulwazi olulondoloziwe ngeke lutholakale ukuba lufakwe ngokuzenzakalela lapho ungena ngemvume"</string>
     <string name="credman_autofill_confirmation_message_new_ui" msgid="6222139222478822267">"&amp;;b&gt;Ishintsha isevisi oyincamelayo ukuze ithi &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Amaphasiwedi amasha, okhiye bokudlula, nolunye ulwazi luzolondolozwa lapha kusukela manje kuya phambili. &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; ingase isebenzise okusesikrinini sakho ukuze inqume ukuthi yini engagcwaliswa ngokuzenzakalela"</string>
     <string name="credman_enable_confirmation_message_title" msgid="1037501792652277829">"Isebenzisa i-%1$s?"</string>
+    <string name="credman_confirmation_turn_off_positive_button" msgid="5678773011513369161">"Vala"</string>
+    <string name="credman_confirmation_change_provider_positive_button" msgid="7732302992885116967">"Shintsha"</string>
     <string name="credman_limit_error_msg_title" msgid="1525814645803612135">"Ungaba namasevisi angu-5 kuphela avuliwe"</string>
     <string name="credman_limit_error_msg" msgid="2521803280130310063">"Vala okungenani isevisi eyodwa ukuze ufake enye"</string>
     <string name="credman_enable_confirmation_message" msgid="8407841892310870169">"I-%1$s isebenzisa okusesikrinini sakho ukuze inqume ukuthi yini engagcwaliswa ngokuzenzekela."</string>
@@ -4752,10 +4768,8 @@
     <string name="media_controls_hide_player" msgid="2751439192580884015">"Fihla umdlali"</string>
     <string name="media_controls_show_player" msgid="8504571042365814021">"Bonisa umdlali"</string>
     <string name="keywords_media_controls" msgid="8345490568291778638">"imidiya"</string>
-    <!-- no translation found for camera_extensions_fallback_title (3604579046777004989) -->
-    <skip />
-    <!-- no translation found for camera_extensions_fallback_description (6939818294458854536) -->
-    <skip />
+    <string name="camera_extensions_fallback_title" msgid="3604579046777004989">"Vumela izandiso zesofthiwe yekhamera"</string>
+    <string name="camera_extensions_fallback_description" msgid="6939818294458854536">"Inika amandla ukufakwa kwesofthiwe okuzenzekalelayo kwezakhi zekhamera ezithuthukisiwe, njengevidiyo ye-Eyes Free."</string>
     <string name="connected_device_see_all_summary" msgid="2056010318537268108">"I-Bluetooth izovuleka"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"I-inthanethi"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"Ama-SIM"</string>
diff --git a/res/values/accessibility_shortcut_keys.xml b/res/values/accessibility_shortcut_keys.xml
index 0d409a8..4992a54 100644
--- a/res/values/accessibility_shortcut_keys.xml
+++ b/res/values/accessibility_shortcut_keys.xml
@@ -16,6 +16,7 @@
   -->
 
 <resources>
+    <string name="accessibility_shortcut_description_pref" translatable="false">shortcut_description</string>
     <string name="accessibility_shortcut_volume_keys_pref" translatable="false">shortcut_volume_keys_pref</string>
     <string name="accessibility_shortcut_gesture_pref" translatable="false">shortcut_gesture_pref</string>
     <string name="accessibility_shortcut_nav_button_pref" translatable="false">shortcut_nav_button_pref</string>
diff --git a/res/values/config.xml b/res/values/config.xml
index 9d71671..afd6fdd 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -679,6 +679,13 @@
     <!-- The ratio to use when using the two-pane settings layout -->
     <item name="config_activity_embed_split_ratio" format="float" type="dimen">0.3636</item>
 
+    <!-- The smallest value of the smallest-width (sw) of the window in any rotation when the split
+         should be used. -->
+    <integer name="config_activity_embed_split_min_sw_dp">600</integer>
+
+    <!-- The smallest value of current width of the window when the split should be used. -->
+    <integer name="config_activity_embed_split_min_cur_dp">720</integer>
+
     <!-- The number of visible app icons while entering app list related pages for preloading.
          Take the "Unrestricted data" page as the example, the visible app icons could be 15
          on 6.4 inches screen size whether the font size and display size are both small. -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 746dbf5..46c8f8c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -132,6 +132,8 @@
     <string name="bluetooth_pairing_pref_title">Pair new device</string>
     <!-- Keywords for bluetooth pairing item [CHAR LIMIT=30] -->
     <string name="keywords_add_bt_device">bluetooth</string>
+    <!-- Title for bluetooth auto on toggle [CHAR LIMIT=60] -->
+    <string name="bluetooth_screen_auto_on_title">Automatically turn on again tomorrow</string>
 
 
     <!-- Button to help user to pair right ear of the hearing aid device. It will show when only one of the hearing aid device set is connected. [CHAR LIMIT=20] -->
@@ -298,21 +300,6 @@
     <!-- Name shown in the title of individual stylus preference in the connected devices page [CHAR LIMIT=60] -->
     <string name="stylus_connected_devices_title">Stylus</string>
 
-    <!-- Title for audio sharing page [CHAR LIMIT=none]-->
-    <string name="audio_sharing_title">Audio sharing</string>
-    <!-- Title for audio sharing primary switch [CHAR LIMIT=none]-->
-    <string name="audio_sharing_switch_title">Share audio</string>
-    <!-- Title for calls and alarms device on audio sharing page [CHAR LIMIT=none]-->
-    <string name="calls_and_alarms_device_title">Calls and alarms</string>
-
-    <!-- Title for audio streams preference category [CHAR LIMIT=none]-->
-    <string name="audio_streams_category_title">Connect to a LE audio stream</string>
-    <!-- Title for audio streams preference [CHAR LIMIT=none]-->
-    <string name="audio_streams_pref_title">Nearby audio streams</string>
-    <!-- Title for audio streams page [CHAR LIMIT=none]-->
-    <string name="audio_streams_title">Audio streams</string>
-    <!-- Summary for QR code scanning in audio streams page [CHAR LIMIT=none]-->
-    <string name="audio_streams_qr_code_summary">Connect to an audio stream using QR code</string>
     <!--Text that appears when scanning for nearby audio streams is finished and no streams were found [CHAR LIMIT=40]-->
     <string name="audio_streams_empty">No nearby audio streams were found.</string>
 
@@ -1311,25 +1298,25 @@
     <!-- Label for private space setup button to create private space [CHAR LIMIT=30] -->
     <string name="private_space_setup_button_label">Set up</string>
     <!-- Title for Private Space setup education screen. [CHAR LIMIT=50] -->
-    <string name="private_space_setup_title">Set up a private space</string>
+    <string name="private_space_setup_title">Private space</string>
     <!-- Summary for the private space setup education screen. [CHAR LIMIT=NONE] -->
-    <string name="private_space_hide_apps_summary">Keep private apps in a separate space that you can hide or lock</string>
+    <string name="private_space_hide_apps_summary">Hide or lock private apps in a separate space. Use a dedicated Google Account for extra security.</string>
     <!-- Text shown in private space setup screen which explains how the private space works [CHAR LIMIT=50] -->
-    <string name="private_space_how_title">How it works</string>
+    <string name="private_space_setup_sub_header">Set up your private space</string>
     <!-- Text shown in private space setup screen which explains private space can be accessed from bottom of all apps list. [CHAR LIMIT=NONE] -->
-    <string name="private_space_access_bottom_text">You can access your private space from the bottom of your apps list</string>
-    <!-- Text shown in private space setup screen which explains private space apps are protected by a lock. [CHAR LIMIT=60] -->
-    <string name="private_space_protected_lock_text">Apps in your private space are protected by a lock</string>
+    <string name="private_space_separate_account_text"><b>Choose a Google Account for your space</b>\nUsing a dedicated account helps to stop synced files, photos, and emails appearing outside your space</string>
+    <!-- Text shown in private space setup screen which explains private space apps are protected by a lock. [CHAR LIMIT=NONE] -->
+    <string name="private_space_protected_lock_text"><b>Set a lock</b>\nLock your space to stop other people opening it</string>
     <!-- Text shown in private space setup screen which explains notifications from private space apps will not be shown when private space is locked. [CHAR LIMIT=NONE] -->
-    <string name="private_space_hidden_notifications_text">Notifications from apps in your private space are hidden when it\u2019s locked</string>
+    <string name="private_space_install_apps_text"><b>Install apps</b>\nYour private space has its own Play Store so you can install apps easily.</string>
     <!-- This is info text to help explain in private space setup screen that the permissions granted to private space apps will not be shown in settings when private space is locked. [CHAR LIMIT=NONE] -->
     <string name="private_space_apps_permission_text">Apps in your private space won\'t appear in permission manager, privacy dashboard, and other settings when your private space is locked.\n\nYour private space can\'t be moved to a new device. You\'ll need to set up another private space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs harmful apps on your device may be able to access your private space.</string>
     <!-- Text shown at the bottom in private space auto advancing  screens. [CHAR LIMIT=60] -->
     <string name="private_space_setting_up_text">Setting up private space\u2026</string>
     <!-- Title for private space setup in auto advancing screen informing private space notifications are hidden when locked. [CHAR LIMIT=NONE] -->
     <string name="private_space_notifications_hidden_title">Notifications from private space apps are hidden when it\u2019s locked</string>
-    <!-- Title for private space setup in auto advancing screen informing photos/files from private space can be shared when unlocked. [CHAR LIMIT=NONE] -->
-    <string name="private_space_share_photos_title">Unlock private space to share photos or files</string>
+    <!-- Title for private space setup in auto advancing screen informing to explore private space settings for hide and auto lock. [CHAR LIMIT=NONE] -->
+    <string name="private_space_explore_settings_title">Explore private space settings to hide private space and set up automatic locking</string>
     <!-- Title for private space setup in auto advancing screen informing some system apps are already installed in private space. [CHAR LIMIT=NONE] -->
     <string name="private_space_apps_installed_title">Some apps are already installed in your private space</string>
     <!-- Title for private space creation error screen. [CHAR LIMIT=60] -->
@@ -1370,6 +1357,12 @@
     <string name="private_space_choose_your_password_header">Set a password for your private space</string>
     <!-- Header for private space choose your pattern screen [CHAR LIMIT=40] -->
     <string name="private_space_choose_your_pattern_header">Set a pattern for your private space</string>
+    <!-- Header for private space apps and notifications section [CHAR LIMIT=40] -->
+    <string name="private_space_apps_and_notifications_header">Apps and notifications</string>
+    <!-- Title for private space sensitive notifications toggle [CHAR LIMIT=80] -->
+    <string name="private_space_notifications_title">Sensitive notifications on lock screen</string>
+    <!-- Summary description for private space sensitive notifications toggle [CHAR LIMIT=200] -->
+    <string name="private_space_sensitive_notifications_description">Show sensitive content when private space is unlocked</string>
 
     <!-- Text shown when "Add fingerprint" button is disabled -->
     <string name="fingerprint_add_max">You can add up to <xliff:g id="count" example="5">%d</xliff:g> fingerprints</string>
@@ -1800,8 +1793,12 @@
     <string name="bluetooth_device_context_pair_connect">Pair &amp; connect</string>
     <!-- Bluetooth settings. Text displayed when Bluetooth is off and device list is empty [CHAR LIMIT=NONE]-->
     <string name="bluetooth_empty_list_bluetooth_off">When Bluetooth is turned on, your device can communicate with other nearby Bluetooth devices</string>
+    <!-- Bluetooth settings. Text displayed when Bluetooth is off and device list is empty when auto-on feature is enabled [CHAR LIMIT=NONE]-->
+    <string name="bluetooth_empty_list_bluetooth_off_auto_on_available">When Bluetooth is on, your device can communicate with other nearby Bluetooth devices. Features like Quick Share, Find My Device, and device location use Bluetooth.</string>
     <!-- Bluetooth settings. Text displayed when Bluetooth is off and bluetooth scanning is turned on [CHAR LIMIT=NONE] -->
     <string name="bluetooth_scanning_on_info_message">When Bluetooth is turned on, your device can communicate with other nearby Bluetooth devices.\n\nTo improve device experience, apps and services can still scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services. You can change this in Bluetooth scanning settings.</string>
+    <!-- Bluetooth settings. Text displayed when Bluetooth is off and bluetooth scanning is turned on [CHAR LIMIT=NONE] -->
+    <string name="bluetooth_scanning_on_info_message_auto_on_available">When Bluetooth is on, your device can communicate with other nearby Bluetooth devices. Features like Quick Share, Find My Device, and device location use Bluetooth.\n\nApps and services can still scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services. You can change this in Bluetooth scanning settings.</string>
     <!-- Bluetooth settings. Link text to bring the user to "scanning settings" screen. [CHAR LIMIT=NONE]-->
     <string name="bluetooth_scan_change">Change</string>
 
@@ -2113,6 +2110,14 @@
     <string name="wifi_ip_settings">IP settings</string>
     <!-- Label for the spinner to show Wifi MAC randomization [CHAR LIMIT=25] -->
     <string name="wifi_privacy_settings">Privacy</string>
+    <!-- Category title for the spinner to show Wifi MAC randomization [CHAR LIMIT=25] -->
+    <string name="wifi_privacy_mac_settings">MAC</string>
+    <!-- Category title for Device name [CHAR LIMIT=25] -->
+    <string name="wifi_privacy_device_name_settings">Device name</string>
+    <!-- Toggle button title for allowing/disallowing sending device name to DHCP [CHAR LIMIT=50] -->
+    <string name="wifi_privacy_send_device_name_toggle_title">Send device name</string>
+    <!-- Toggle button title for allowing/disallowing sending device name to DHCP [CHAR LIMIT=50] -->
+    <string name="wifi_privacy_send_device_name_toggle_summary">Share this device\u0027s name with the network</string>
     <!-- Label for the subscription preference. [CHAR LIMIT=32] -->
     <string name="wifi_subscription">Subscription</string>
     <!-- Summary text for the subscription preference. [CHAR LIMIT=NONE] -->
@@ -2824,6 +2829,10 @@
     <string name="dark_ui_bedtime_footer_summary">Dark theme is currently following your Bedtime mode schedule</string>
     <!-- Dark UI screen footer action text shown when the when Dark theme turns on/off automatically according to a user bedtime schedule. [CHAR LIMIT=NONE] -->
     <string name="dark_ui_bedtime_footer_action">Bedtime mode settings</string>
+    <!-- Even Dimmer setting title. Allows device to reduce brightness even further than standard range. [CHAR LIMIT=NONE] -->
+    <string name="even_dimmer_display_title">Even Dimmer</string>
+    <!-- Even Dimmer setting summary. [CHAR LIMIT=NONE] -->
+    <string name="even_dimmer_display_summary">Allow device to go dimmer than usual</string>
 
 
     <!-- Sound & display settings screen, setting option name to change screen timeout -->
@@ -4362,6 +4371,10 @@
     <string name="trackpad_pointer_speed">Pointer speed</string>
     <!-- Title for the button to trigger the 'touch gesture' education. [CHAR LIMIT=35] -->
     <string name="trackpad_touch_gesture">Learn touchpad gestures</string>
+    <!-- Search keywords for "touchpad" -->
+    <string name="keywords_touchpad">trackpad, track pad, mouse, cursor, scroll, swipe, right click, click, pointer</string>
+    <!-- Search keywords for 'Bottom-right tap', the name of the touchpad setting that allows the user to click the bottom right corner of the touchpad for more options. -->
+    <string name="keywords_trackpad_bottom_right_tap">right click, tap</string>
 
     <!-- Title text for 'Go home' gesture education [CHAR LIMIT=35] -->
     <string name="gesture_title_go_home">Go home</string>
@@ -5096,6 +5109,10 @@
     <string name="accessibility_shortcut_type_hardware">Hold volume keys</string>
     <!-- Summary for accessibility shortcut preference for magnification triple tap shortcut type. [CHAR LIMIT=NONE] -->
     <string name="accessibility_shortcut_type_triple_tap">Triple tap screen</string>
+    <!-- Generic title for editing the shortcuts of multiple accessibility features. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_shortcut_edit_screen_title">Edit accessibility shortcuts</string>
+    <!-- Prompt for editing the shortcuts of multiple accessibility features. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_shortcut_edit_screen_prompt">Chose your shortcut for %1$s</string>
 
     <!-- Button text for the accessibility dialog continue to the next screen for hearing aid. [CHAR LIMIT=32] -->
     <string name="accessibility_hearingaid_instruction_continue_button">Continue</string>
@@ -5123,8 +5140,6 @@
     <string name="accessibility_hearingaid_more_device_summary"><xliff:g id="device_name" example="GN Hearing Aids">%1$s</xliff:g> +1 more</string>
     <!-- Title for the hearing device pairing preference. [CHAR LIMIT=20] -->
     <string name="accessibility_hearing_device_pairing_title">Pair new device</string>
-    <!-- Title for accessibility pair new hearing device page footer. [CHAR LIMIT=60] -->
-    <string name="accessibility_pair_hearing_device_about_title">About Pair new device</string>
     <!-- Title for the preference category containing the connected hearing device group. [CHAR LIMIT=20]-->
     <string name="accessibility_hearing_device_connected_title">Hearing devices</string>
     <!-- Title for the preference category containing the previously connected hearing device group. [CHAR LIMIT=20]-->
@@ -5139,10 +5154,10 @@
     <string name="accessibility_hac_mode_summary">Improves compatibility with telecoils and reduces unwanted noise</string>
     <!-- Title for accessibility hearing device page footer. [CHAR LIMIT=40] -->
     <string name="accessibility_hearing_device_about_title">About hearing devices</string>
-    <!-- Description for text in accessibility hearing aids footer. [CHAR LIMIT=NONE] -->
-    <string name="accessibility_hearing_device_footer_summary">Make sure your hearing device is turned on and ready to pair</string>
     <!-- Title for the pair hearing device page. [CHAR LIMIT=25] -->
     <string name="accessibility_hearing_device_pairing_page_title">Pair hearing device</string>
+    <!-- Subtitle for the pair hearing device page. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_hearing_device_pairing_intro">You can pair ASHA and LE Audio hearing devices on this page. Make sure your hearing device is turned on and ready to pair.</string>
     <!-- Title for the preference category containing the list of the available hearing during and after bluetooth scanning devices. [CHAR LIMIT=30] -->
     <string name="accessibility_found_hearing_devices">Available hearing devices</string>
     <!-- Title for the preference category containing the all bluetooth devices during and after bluetooth scanning devices. Used when people can not find their hearing device in hearing device pairing list. [CHAR LIMIT=45] -->
@@ -8592,6 +8607,14 @@
     <!-- [CHAR LIMIT=NONE] App notification settings: link to app notification settings-->
     <string name="app_settings_link">Additional settings in the app</string>
 
+    <!-- [CHAR LIMIT=20] 3-dot menu option, reloads the screen to show channels that have not
+    received notifications in the last two week -->
+    <string name="show_unused_channels">Show unused channels</string>
+
+    <!-- [CHAR LIMIT=20] 3-dot menu option, reloads the screen to hide channels that have not
+    received notifications in the last two week -->
+    <string name="hide_unused_channels">Hide unused channels</string>
+
     <!-- [CHAR LIMIT=NONE] Footer listing a count of deleted channels. -->
     <string name="deleted_channels">{count, plural,
       =1      {# category deleted}
@@ -10216,6 +10239,21 @@
     <!-- Keywords for settings screen for controlling apps that can run long background tasks [CHAR LIMIT=NONE] -->
     <string name="keywords_long_background_tasks">long jobs, data transfer, background tasks</string>
 
+    <!-- Title for the settings screen for controlling apps that hold the run backup jobs permission [CHAR LIMIT=60] -->
+    <string name="run_backup_tasks_title">Perform backup tasks in background</string>
+    <!-- Label for the switch to toggle the run backup jobs permission [CHAR LIMIT=100] -->
+    <string name="run_backup_tasks_switch_title">Allow app to run backup-related background tasks</string>
+    <!-- Description that appears below the run_backup_tasks switch [CHAR LIMIT=NONE] -->
+    <string name="run_backup_tasks_footer_title">
+        Indicates that this app has a major use-case where it needs to backup or sync content.
+        Granting this permission allows the app to run in the background for a slightly longer time
+        in order to complete the backup-related work.
+        \n\nIf this permission is denied, the system will not give any special exemption to this
+        app to complete backup-related work in the background.
+    </string>
+    <!-- Keywords for settings screen for controlling apps that hold the run backup tasks permission [CHAR LIMIT=NONE] -->
+    <string name="keywords_run_backup_tasks">backup tasks, backup jobs</string>
+
     <!-- Reset rate-limiting in the system service ShortcutManager.  "ShortcutManager" is the name of a system service and not translatable.
     If the word "rate-limit" is hard to translate, use "Reset ShortcutManager API call limit" as the source text, which means
     the same thing in this context.
@@ -11576,7 +11614,7 @@
     <string name="primary_sim_calls_title">Calls</string>
     <!-- Title of Texts item/dialog at dual sim onboarding's primary sim page or SIMs page. [CHAR LIMIT=30] -->
     <string name="primary_sim_texts_title">Texts</string>
-    <!-- Title of automatic data switching at dual sim onboarding's primary sim page or SIMs page. [CHAR LIMIT=30] -->
+    <!-- Title of automatic data switching at dual sim onboarding's primary sim page or SIMs page. [CHAR LIMIT=60] -->
     <string name="primary_sim_automatic_data_title">Automatic data switching</string>
     <!-- Body text of automatic data switching at dual sim onboarding's primary sim page or SIMs page. [CHAR LIMIT=NONE] -->
     <string name="primary_sim_automatic_data_msg">Use data from either SIM depending on coverage and availability</string>
@@ -11658,6 +11696,16 @@
     <!-- Body text of error message indicating the device could not erase the SIM due to an error. [CHAR_LIMIT=NONE] -->
     <string name="erase_sim_fail_text">Something went wrong and this eSIM wasn\'t erased.\n\nRestart your device and try again.</string>
 
+    <!-- Strings for to use Wi-Fi before deleting eUICC subscriptions -->
+    <!-- Title on confirmation dialog asking the user to have Wi-Fi. [CHAR_LIMIT=NONE] -->
+    <string name="wifi_warning_dialog_title">Connect to Wi\u2011Fi before erasing</string>
+    <!-- Body text in confirmation dialog indicating why having Wi-Fi is recommended. [CHAR_LIMIT=NONE] -->
+    <string name="wifi_warning_dialog_text">This makes it easier to use your eSIM again in the future without needing to contact your carrier</string>
+    <!-- Button label to continue with erasing [CHAR_LIMIT=20] -->
+    <string name="wifi_warning_continue_button">Erase anyway</string>
+    <!-- Button label to return to settings [CHAR_LIMIT=20] -->
+    <string name="wifi_warning_return_button">OK</string>
+
     <!-- Title for Network connection request Dialog [CHAR LIMIT=60] -->
     <string name="network_connection_request_dialog_title">Connect to device</string>
     <!-- Summary for Network connection request Dialog [CHAR LIMIT=NONE] -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index fbc6d7f..0a28b01 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -966,6 +966,7 @@
         <item name="android:paddingTop">20dp</item>
         <item name="android:paddingBottom">8dp</item>
         <item name="android:textSize">14sp</item>
+        <item name="android:fontFamily">google-sans-medium</item>
     </style>
 
     <style name="PrivateSpaceSetupBulletPointLayoutStyle">
diff --git a/res/xml/accessibility_edit_shortcuts.xml b/res/xml/accessibility_edit_shortcuts.xml
index 06cbedd..8be0ee5 100644
--- a/res/xml/accessibility_edit_shortcuts.xml
+++ b/res/xml/accessibility_edit_shortcuts.xml
@@ -18,62 +18,66 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto">
 
-    <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
-        android:key="@string/accessibility_shortcut_fab_pref"
-        android:persistent="false"
-        android:selectable="true"
-        settings:allowDividerAbove="false"
-        settings:allowDividerBelow="false"
-        settings:controller="com.android.settings.accessibility.shortcuts.FloatingButtonShortcutOptionController" />
+    <PreferenceCategory
+        android:key="@string/accessibility_shortcut_description_pref">
 
-    <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
-        android:key="@string/accessibility_shortcut_gesture_pref"
-        android:persistent="false"
-        android:selectable="true"
-        settings:allowDividerAbove="false"
-        settings:allowDividerBelow="false"
-        settings:controller="com.android.settings.accessibility.shortcuts.GestureShortcutOptionController" />
+        <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
+            android:key="@string/accessibility_shortcut_fab_pref"
+            android:persistent="false"
+            android:selectable="true"
+            settings:allowDividerAbove="false"
+            settings:allowDividerBelow="false"
+            settings:controller="com.android.settings.accessibility.shortcuts.FloatingButtonShortcutOptionController" />
 
-    <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
-        android:key="@string/accessibility_shortcut_nav_button_pref"
-        android:persistent="false"
-        android:selectable="true"
-        settings:allowDividerAbove="false"
-        settings:allowDividerBelow="false"
-        settings:controller="com.android.settings.accessibility.shortcuts.NavButtonShortcutOptionController" />
+        <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
+            android:key="@string/accessibility_shortcut_gesture_pref"
+            android:persistent="false"
+            android:selectable="true"
+            settings:allowDividerAbove="false"
+            settings:allowDividerBelow="false"
+            settings:controller="com.android.settings.accessibility.shortcuts.GestureShortcutOptionController" />
 
-    <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
-        android:key="@string/accessibility_shortcut_volume_keys_pref"
-        android:persistent="false"
-        android:selectable="true"
-        settings:allowDividerAbove="false"
-        settings:allowDividerBelow="false"
-        settings:controller="com.android.settings.accessibility.shortcuts.VolumeKeysShortcutOptionController" />
+        <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
+            android:key="@string/accessibility_shortcut_nav_button_pref"
+            android:persistent="false"
+            android:selectable="true"
+            settings:allowDividerAbove="false"
+            settings:allowDividerBelow="false"
+            settings:controller="com.android.settings.accessibility.shortcuts.NavButtonShortcutOptionController" />
 
-    <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
-        android:key="@string/accessibility_shortcut_two_fingers_double_tap_pref"
-        android:persistent="false"
-        android:selectable="true"
-        settings:allowDividerAbove="false"
-        settings:allowDividerBelow="false"
-        settings:controller="com.android.settings.accessibility.shortcuts.TwoFingersDoubleTapShortcutOptionController" />
+        <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
+            android:key="@string/accessibility_shortcut_volume_keys_pref"
+            android:persistent="false"
+            android:selectable="true"
+            settings:allowDividerAbove="false"
+            settings:allowDividerBelow="false"
+            settings:controller="com.android.settings.accessibility.shortcuts.VolumeKeysShortcutOptionController" />
 
-    <Preference
-        android:icon="@drawable/ic_keyboard_arrow_down"
-        android:key="@string/accessibility_shortcuts_advanced_collapsed"
-        android:persistent="false"
-        android:selectable="true"
-        android:title="@string/accessibility_shortcut_edit_dialog_title_advance"
-        settings:allowDividerAbove="false"
-        settings:allowDividerBelow="false"
-        settings:controller="com.android.settings.accessibility.shortcuts.AdvancedShortcutsPreferenceController" />
+        <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
+            android:key="@string/accessibility_shortcut_two_fingers_double_tap_pref"
+            android:persistent="false"
+            android:selectable="true"
+            settings:allowDividerAbove="false"
+            settings:allowDividerBelow="false"
+            settings:controller="com.android.settings.accessibility.shortcuts.TwoFingersDoubleTapShortcutOptionController" />
 
-    <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
-        android:key="@string/accessibility_shortcut_triple_tap_pref"
-        android:persistent="false"
-        android:selectable="true"
-        settings:allowDividerAbove="false"
-        settings:allowDividerBelow="false"
-        settings:controller="com.android.settings.accessibility.shortcuts.TripleTapShortcutOptionController" />
+        <Preference
+            android:icon="@drawable/ic_keyboard_arrow_down"
+            android:key="@string/accessibility_shortcuts_advanced_collapsed"
+            android:persistent="false"
+            android:selectable="true"
+            android:title="@string/accessibility_shortcut_edit_dialog_title_advance"
+            settings:allowDividerAbove="false"
+            settings:allowDividerBelow="false"
+            settings:controller="com.android.settings.accessibility.shortcuts.AdvancedShortcutsPreferenceController" />
+
+        <com.android.settings.accessibility.shortcuts.ShortcutOptionPreference
+            android:key="@string/accessibility_shortcut_triple_tap_pref"
+            android:persistent="false"
+            android:selectable="true"
+            settings:allowDividerAbove="false"
+            settings:allowDividerBelow="false"
+            settings:controller="com.android.settings.accessibility.shortcuts.TripleTapShortcutOptionController" />
+    </PreferenceCategory>
 
 </PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/accessibility_hearing_aids.xml b/res/xml/accessibility_hearing_aids.xml
index 57a0fe2..27a4212 100644
--- a/res/xml/accessibility_hearing_aids.xml
+++ b/res/xml/accessibility_hearing_aids.xml
@@ -60,11 +60,4 @@
             settings:searchable="true"
             settings:controller="com.android.settings.accessibility.HearingAidCompatibilityPreferenceController"/>
     </PreferenceCategory>
-
-    <com.android.settings.accessibility.AccessibilityFooterPreference
-        android:key="hearing_device_footer"
-        android:title="@string/accessibility_hearing_device_footer_summary"
-        android:selectable="false"
-        settings:searchable="false"
-        settings:controller="com.android.settings.accessibility.HearingDeviceFooterPreferenceController"/>
 </PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/bluetooth_audio_sharing.xml b/res/xml/bluetooth_audio_sharing.xml
deleted file mode 100644
index 45781c0..0000000
--- a/res/xml/bluetooth_audio_sharing.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/audio_sharing_title">
-
-    <com.android.settingslib.widget.TopIntroPreference
-        android:key="audio_sharing_top_intro"
-        android:title="Let others listen to your media along with you using their own compatible headphones"
-        settings:searchable="false" />
-
-    <PreferenceCategory
-        android:key="audio_sharing_device_volume_group"
-        android:title="Devices listening"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.AudioSharingDeviceVolumeGroupController" />
-
-    <Preference
-        android:icon="@drawable/ic_audio_calls_and_alarms"
-        android:key="calls_and_alarms"
-        android:summary=""
-        android:title="@string/calls_and_alarms_device_title"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.CallsAndAlarmsPreferenceController" />
-
-    <Preference
-        android:icon="@drawable/ic_audio_play_sample"
-        android:key="audio_sharing_play_sound"
-        android:summary="Everyone listening should hear it"
-        android:title="Play a test sound"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.AudioSharingPlaySoundPreferenceController" />
-
-    <PreferenceCategory
-        android:key="audio_sharing_stream_settings_category"
-        android:title="Stream settings"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.StreamSettingsCategoryController">
-
-        <com.android.settings.connecteddevice.audiosharing.AudioSharingNamePreference
-            android:key="audio_sharing_stream_name"
-            android:title="Name"
-            settings:controller="com.android.settings.connecteddevice.audiosharing.AudioSharingNamePreferenceController" />
-
-        <com.android.settings.widget.ValidatedEditTextPreference
-            android:key="audio_sharing_stream_password"
-            android:summary="********"
-            android:title="Password"
-            settings:controller="com.android.settings.connecteddevice.audiosharing.AudioSharingPasswordPreferenceController" />
-
-        <SwitchPreferenceCompat
-            android:key="audio_sharing_stream_compatibility"
-            android:title="Improve compatibility"
-            settings:controller="com.android.settings.connecteddevice.audiosharing.AudioSharingCompatibilityPreferenceController" />
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="audio_streams_settings_category"
-        android:title="@string/audio_streams_category_title"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsCategoryController">
-
-        <Preference
-            android:fragment="com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsDashboardFragment"
-            android:icon="@drawable/ic_chevron_right_24dp"
-            android:key="audio_streams_settings"
-            android:title="@string/audio_streams_pref_title" />
-
-    </PreferenceCategory>
-</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/bluetooth_audio_streams.xml b/res/xml/bluetooth_audio_streams.xml
deleted file mode 100644
index e7e708e..0000000
--- a/res/xml/bluetooth_audio_streams.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="Find an audio stream">
-
-    <com.android.settingslib.widget.TopIntroPreference
-        android:key="audio_streams_top_intro"
-        android:title="Listen to a device that's sharing audio or to a nearby Auracast broadcast"
-        settings:searchable="false"/>
-
-    <Preference
-        android:key="audio_streams_active_device"
-        android:title="Your audio device"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsActiveDeviceController" />
-
-    <com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryPreference
-        android:key="audio_streams_nearby_category"
-        android:title="Audio streams nearby"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController">
-
-    <Preference
-        android:key="audio_streams_scan_qr_code"
-        android:title="Scan a QR code"
-        android:icon="@drawable/ic_add_24dp"
-        android:summary="Start listening by scanning a stream's QR code"
-        android:order="0"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsScanQrCodeController" />
-
-    </com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryPreference>
-
-</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/bluetooth_screen.xml b/res/xml/bluetooth_screen.xml
index 86dc8a1..51507fb 100644
--- a/res/xml/bluetooth_screen.xml
+++ b/res/xml/bluetooth_screen.xml
@@ -18,6 +18,11 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/bluetooth_settings_title">
 
+    <SwitchPreferenceCompat
+        android:key="bluetooth_auto_on_settings_toggle"
+        android:title="@string/bluetooth_screen_auto_on_title"
+        settings:controller="com.android.settings.bluetooth.BluetoothAutoOnPreferenceController"/>
+
     <Preference
         android:key="bluetooth_screen_bt_pair_rename_devices"
         android:title="@string/bluetooth_device_name"
diff --git a/res/xml/connected_devices.xml b/res/xml/connected_devices.xml
index 34a5798..40ab145 100644
--- a/res/xml/connected_devices.xml
+++ b/res/xml/connected_devices.xml
@@ -27,22 +27,8 @@
         settings:controller="com.android.settings.slices.SlicePreferenceController" />
 
     <PreferenceCategory
-        android:key="audio_sharing_device_list"
-        android:title="@string/audio_sharing_title"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.AudioSharingDevicePreferenceController">
-        <Preference
-            android:fragment="com.android.settings.connecteddevice.audiosharing.AudioSharingDashboardFragment"
-            android:icon="@drawable/ic_bt_audio_sharing"
-            android:key="connected_device_audio_sharing_settings"
-            android:order="10"
-            android:title="@string/audio_sharing_title"
-            settings:searchable="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory
         android:key="available_device_list"
-        android:title="@string/connected_device_media_device_title"
-        settings:controller="com.android.settings.connecteddevice.AvailableMediaDeviceGroupController" />
+        android:title="@string/connected_device_media_device_title"/>
 
     <PreferenceCategory
         android:key="connected_device_list"
diff --git a/res/xml/connected_devices_advanced.xml b/res/xml/connected_devices_advanced.xml
index b088791..66cd46b 100644
--- a/res/xml/connected_devices_advanced.xml
+++ b/res/xml/connected_devices_advanced.xml
@@ -26,15 +26,6 @@
         android:order="-10"
         android:title="@string/bluetooth_settings_title" />
 
-    <Preference
-        android:fragment="com.android.settings.connecteddevice.audiosharing.AudioSharingDashboardFragment"
-        android:icon="@drawable/ic_bt_audio_sharing"
-        android:key="audio_sharing_settings"
-        android:order="-9"
-        android:title="@string/audio_sharing_title"
-        settings:controller="com.android.settings.connecteddevice.audiosharing.AudioSharingPreferenceController"
-        settings:searchable="true" />
-
     <com.android.settingslib.RestrictedPreference
         android:fragment="com.android.settings.connecteddevice.NfcAndPaymentFragment"
         android:icon="@drawable/ic_nfc"
diff --git a/res/xml/date_time_prefs.xml b/res/xml/date_time_prefs.xml
index f1c62bb..3268466 100644
--- a/res/xml/date_time_prefs.xml
+++ b/res/xml/date_time_prefs.xml
@@ -57,7 +57,7 @@
             settings:controller="com.android.settings.datetime.LocationProviderStatusPreferenceController"/>
 
         <!-- This preference gets removed if location-based time zone detection is not supported -->
-        <SwitchPreference
+        <SwitchPreferenceCompat
             android:key="location_time_zone_detection"
             android:title="@string/location_time_zone_detection_toggle_title"
             settings:controller="com.android.settings.datetime.LocationTimeZoneDetectionPreferenceController"/>
@@ -77,12 +77,12 @@
         android:key="time_format_preference_category"
         android:title="@string/time_format_category_title"
         settings:keywords="@string/keywords_time_format">
-        <SwitchPreference
+        <SwitchPreferenceCompat
             android:key="auto_24hour"
             android:title="@string/date_time_24hour_auto"
             settings:controller="com.android.settings.datetime.AutoTimeFormatPreferenceController" />
 
-        <SwitchPreference
+        <SwitchPreferenceCompat
             android:key="24 hour"
             android:title="@string/date_time_24hour"
             settings:controller="com.android.settings.datetime.TimeFormatPreferenceController" />
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 2df360d..5b4bee8 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -36,6 +36,11 @@
             android:title="@string/auto_brightness_title"
             android:fragment="com.android.settings.display.AutoBrightnessSettings"
             settings:controller="com.android.settings.display.AutoBrightnessPreferenceController"/>
+        <SwitchPreferenceCompat
+            android:key="even_dimmer_activated"
+            android:title="@string/even_dimmer_display_title"
+            android:summary="@string/even_dimmer_display_summary"
+            settings:controller="com.android.settings.display.EvenDimmerPreferenceController"/>
     </PreferenceCategory>
 
     <PreferenceCategory
diff --git a/res/xml/hearing_device_pairing_detail.xml b/res/xml/hearing_device_pairing_detail.xml
index 0ccd000..0526eb3 100644
--- a/res/xml/hearing_device_pairing_detail.xml
+++ b/res/xml/hearing_device_pairing_detail.xml
@@ -32,12 +32,4 @@
             settings:useAdminDisabledSummary="true"
             settings:controller="com.android.settings.accessibility.ViewAllBluetoothDevicesPreferenceController"/>
     </PreferenceCategory>
-
-    <com.android.settings.accessibility.AccessibilityFooterPreference
-        android:key="hearing_device_footer"
-        android:title="@string/accessibility_hearing_device_footer_summary"
-        android:selectable="false"
-        settings:searchable="false"
-        settings:controller="com.android.settings.accessibility.PairHearingDeviceFooterPreferenceController"/>
-
 </PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/hearing_device_pairing_fragment.xml b/res/xml/hearing_device_pairing_fragment.xml
index 1ccc1dd..ce7f39f 100644
--- a/res/xml/hearing_device_pairing_fragment.xml
+++ b/res/xml/hearing_device_pairing_fragment.xml
@@ -19,6 +19,10 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/bluetooth_pairing_pref_title">
 
+    <com.android.settingslib.widget.TopIntroPreference
+        settings:searchable="false"
+        android:title="@string/accessibility_hearing_device_pairing_intro" />
+
     <com.android.settings.bluetooth.BluetoothProgressCategory
         android:key="available_hearing_devices"
         android:title="@string/accessibility_found_hearing_devices" />
@@ -35,11 +39,4 @@
             settings:controller="com.android.settings.accessibility.ViewAllBluetoothDevicesPreferenceController"/>
     </PreferenceCategory>
 
-    <com.android.settings.accessibility.AccessibilityFooterPreference
-        android:key="hearing_device_footer"
-        android:title="@string/accessibility_hearing_device_footer_summary"
-        android:selectable="false"
-        settings:searchable="false"
-        settings:controller="com.android.settings.accessibility.PairHearingDeviceFooterPreferenceController"/>
-
 </PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/private_space_settings.xml b/res/xml/private_space_settings.xml
index 0ed9c93..e718ca8 100644
--- a/res/xml/private_space_settings.xml
+++ b/res/xml/private_space_settings.xml
@@ -60,6 +60,17 @@
     </PreferenceCategory>
 
     <PreferenceCategory
+        android:title="@string/private_space_apps_and_notifications_header">
+
+        <com.android.settingslib.RestrictedSwitchPreference
+            android:key="private_space_sensitive_notifications"
+            android:title="@string/private_space_notifications_title"
+            android:summary="@string/private_space_sensitive_notifications_description"
+            settings:controller="com.android.settings.privatespace.HidePrivateSpaceSensitiveNotificationsController" />
+
+    </PreferenceCategory>
+
+    <PreferenceCategory
         android:title="@string/private_space_category_system">
 
         <Preference
diff --git a/res/xml/special_access.xml b/res/xml/special_access.xml
index 743a122..d522ef6 100644
--- a/res/xml/special_access.xml
+++ b/res/xml/special_access.xml
@@ -20,6 +20,14 @@
     android:title="@string/special_access">
 
     <Preference
+        android:key="run_backup_tasks"
+        android:title="@string/run_backup_tasks_title"
+        android:order="-2000"
+        settings:keywords="@string/keywords_run_backup_tasks"
+        settings:controller="com.android.settings.spa.app.specialaccess.BackupTasksAppsPreferenceController">
+    </Preference>
+
+    <Preference
         android:key="manage_external_storage"
         android:title="@string/manage_external_storage_title"
         android:order="-1900"
diff --git a/res/xml/trackpad_settings.xml b/res/xml/trackpad_settings.xml
index 84ea528..cca92a3 100644
--- a/res/xml/trackpad_settings.xml
+++ b/res/xml/trackpad_settings.xml
@@ -49,7 +49,8 @@
         android:summary="@string/trackpad_bottom_right_tap_summary"
         android:icon="@drawable/ic_trackpad_bottom_right_click"
         settings:controller="com.android.settings.inputmethod.TrackpadBottomPreferenceController"
-        android:order="30"/>
+        android:order="30"
+        settings:keywords="@string/keywords_trackpad_bottom_right_tap"/>
 
     <com.android.settings.widget.SeekBarPreference
         android:key="trackpad_pointer_speed"
@@ -64,4 +65,4 @@
         android:title="@string/trackpad_touch_gesture"
         android:icon="@drawable/ic_trackpad_touch_gestures_inverse"
         settings:controller="com.android.settings.inputmethod.TouchGesturesButtonPreferenceController"/>
-</PreferenceScreen>
\ No newline at end of file
+</PreferenceScreen>
diff --git a/res/xml/wifi_network_details_fragment2.xml b/res/xml/wifi_network_details_fragment2.xml
index daff20f..598f9d8 100644
--- a/res/xml/wifi_network_details_fragment2.xml
+++ b/res/xml/wifi_network_details_fragment2.xml
@@ -97,6 +97,11 @@
         android:entries="@array/wifi_privacy_entries"
         android:entryValues="@array/wifi_privacy_values"/>
 
+    <com.android.settings.spa.preference.ComposePreference
+        android:key="privacy_settings"
+        android:title="@string/wifi_privacy_settings"
+        settings:controller="com.android.settings.wifi.details2.WifiPrivacyPreferenceController"/>
+
     <Preference
         android:key="subscription_detail"
         android:title="@string/wifi_subscription"
diff --git a/src/com/android/settings/ActionDisabledByAppOpsDialog.java b/src/com/android/settings/ActionDisabledByAppOpsDialog.java
index 15b8503..be3558e 100644
--- a/src/com/android/settings/ActionDisabledByAppOpsDialog.java
+++ b/src/com/android/settings/ActionDisabledByAppOpsDialog.java
@@ -21,7 +21,6 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
-import android.util.Log;
 
 public class ActionDisabledByAppOpsDialog extends Activity
         implements DialogInterface.OnDismissListener {
diff --git a/src/com/android/settings/SettingsActivityUtil.kt b/src/com/android/settings/SettingsActivityUtil.kt
index 4238ff8..b1927f1 100644
--- a/src/com/android/settings/SettingsActivityUtil.kt
+++ b/src/com/android/settings/SettingsActivityUtil.kt
@@ -31,6 +31,7 @@
 import com.android.settings.spa.SpaAppBridgeActivity.Companion.getDestinationForApp
 import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider
 import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider
+import com.android.settings.spa.app.specialaccess.BackupTasksAppsListProvider
 import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider
 import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider
 import com.android.settings.spa.app.specialaccess.MediaManagementAppsAppListProvider
@@ -68,6 +69,8 @@
             NfcTagAppsSettingsProvider.getAppInfoRoutePrefix(),
         VoiceActivationAppsListProvider::class.qualifiedName to
             VoiceActivationAppsListProvider.getAppInfoRoutePrefix(),
+        BackupTasksAppsListProvider::class.qualifiedName to
+            BackupTasksAppsListProvider.getAppInfoRoutePrefix(),
     )
 
     @JvmStatic
diff --git a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
index 0dbf05e..4e9cd92 100644
--- a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
@@ -43,6 +43,7 @@
 import com.android.settings.core.InstrumentedFragment;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.accessibility.AccessibilityUtils;
 
 import java.util.List;
@@ -164,16 +165,9 @@
         if (permittedServices != null && !permittedServices.contains(packageName)) {
             return false;
         }
-        try {
-            final int mode = mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS,
-                    uid, packageName);
-            final boolean ecmEnabled = getContext().getResources().getBoolean(
-                    com.android.internal.R.bool.config_enhancedConfirmationModeEnabled);
-            return !ecmEnabled || mode == AppOpsManager.MODE_ALLOWED;
-        } catch (Exception e) {
-            // Fallback in case if app ops is not available in testing.
-            return true;
-        }
+
+        return !RestrictedLockUtilsInternal.isEnhancedConfirmationRestricted(getContext(),
+                packageName, AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE);
     }
 
     private AccessibilityServiceInfo getAccessibilityServiceInfo(ComponentName componentName) {
diff --git a/src/com/android/settings/accessibility/PairHearingDeviceFooterPreferenceController.java b/src/com/android/settings/accessibility/PairHearingDeviceFooterPreferenceController.java
deleted file mode 100644
index 09396ff..0000000
--- a/src/com/android/settings/accessibility/PairHearingDeviceFooterPreferenceController.java
+++ /dev/null
@@ -1,35 +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.
- */
-
-package com.android.settings.accessibility;
-
-import android.content.Context;
-
-import com.android.settings.R;
-
-/** Preference controller for footer in pair hearing device page. */
-public class PairHearingDeviceFooterPreferenceController extends
-        AccessibilityFooterPreferenceController {
-    public PairHearingDeviceFooterPreferenceController(Context context,
-            String key) {
-        super(context, key);
-    }
-
-    @Override
-    protected String getIntroductionTitle() {
-        return mContext.getString(R.string.accessibility_pair_hearing_device_about_title);
-    }
-}
diff --git a/src/com/android/settings/accessibility/RestrictedPreferenceHelper.java b/src/com/android/settings/accessibility/RestrictedPreferenceHelper.java
index 6f21fb8..03bf142 100644
--- a/src/com/android/settings/accessibility/RestrictedPreferenceHelper.java
+++ b/src/com/android/settings/accessibility/RestrictedPreferenceHelper.java
@@ -235,10 +235,11 @@
         boolean serviceAllowed = permittedServices == null || permittedServices.contains(
                 preference.getPackageName());
 
-        if (android.security.Flags.extendEcmToAllSettings()) {
+        if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()
+                && android.security.Flags.extendEcmToAllSettings()) {
             preference.checkEcmRestrictionAndSetDisabled(
                     AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE,
-                    preference.getPackageName(), preference.getUid());
+                    preference.getPackageName());
             if (preference.isDisabledByEcm()) {
                 serviceAllowed = false;
             }
@@ -257,40 +258,39 @@
                     preference.setEnabled(false);
                 }
             }
-            return;
-        }
-
-        boolean appOpsAllowed;
-        if (serviceAllowed) {
-            try {
-                final int mode = mAppOps.noteOpNoThrow(
-                        AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS,
-                        preference.getUid(), preference.getPackageName());
-                final boolean ecmEnabled = mContext.getResources().getBoolean(
-                        com.android.internal.R.bool.config_enhancedConfirmationModeEnabled);
-                appOpsAllowed = !ecmEnabled || mode == AppOpsManager.MODE_ALLOWED;
-                serviceAllowed = appOpsAllowed;
-            } catch (Exception e) {
-                // Allow service in case if app ops is not available in testing.
-                appOpsAllowed = true;
-            }
         } else {
-            appOpsAllowed = false;
-        }
-        if (serviceAllowed || serviceEnabled) {
-            preference.setEnabled(true);
-        } else {
-            // Disable accessibility service that are not permitted.
-            final RestrictedLockUtils.EnforcedAdmin admin =
-                    RestrictedLockUtilsInternal.checkIfAccessibilityServiceDisallowed(
-                            mContext, preference.getPackageName(), UserHandle.myUserId());
-
-            if (admin != null) {
-                preference.setDisabledByAdmin(admin);
-            } else if (!appOpsAllowed) {
-                preference.setDisabledByAppOps(true);
+            boolean appOpsAllowed;
+            if (serviceAllowed) {
+                try {
+                    final int mode = mAppOps.noteOpNoThrow(
+                            AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS,
+                            preference.getUid(), preference.getPackageName());
+                    final boolean ecmEnabled = mContext.getResources().getBoolean(
+                            com.android.internal.R.bool.config_enhancedConfirmationModeEnabled);
+                    appOpsAllowed = !ecmEnabled || mode == AppOpsManager.MODE_ALLOWED;
+                    serviceAllowed = appOpsAllowed;
+                } catch (Exception e) {
+                    // Allow service in case if app ops is not available in testing.
+                    appOpsAllowed = true;
+                }
             } else {
-                preference.setEnabled(false);
+                appOpsAllowed = false;
+            }
+            if (serviceAllowed || serviceEnabled) {
+                preference.setEnabled(true);
+            } else {
+                // Disable accessibility service that are not permitted.
+                final RestrictedLockUtils.EnforcedAdmin admin =
+                        RestrictedLockUtilsInternal.checkIfAccessibilityServiceDisallowed(
+                                mContext, preference.getPackageName(), UserHandle.myUserId());
+
+                if (admin != null) {
+                    preference.setDisabledByAdmin(admin);
+                } else if (!appOpsAllowed) {
+                    preference.setDisabledByAppOps(true);
+                } else {
+                    preference.setEnabled(false);
+                }
             }
         }
     }
diff --git a/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceController.java b/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceController.java
index 213cfbd..622d5d8 100644
--- a/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceController.java
+++ b/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceController.java
@@ -16,27 +16,19 @@
 
 package com.android.settings.accessibility;
 
-import static android.app.Activity.RESULT_OK;
-
 import android.content.Context;
-import android.content.Intent;
-import android.preference.PreferenceManager;
 import android.text.TextUtils;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
-import com.android.settings.bluetooth.BluetoothPairingDetail;
+import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.dashboard.DashboardFragment;
 
-import androidx.annotation.VisibleForTesting;
-
 /** Preference controller for all bluetooth device preference. */
-public class ViewAllBluetoothDevicesPreferenceController extends BasePreferenceController implements
-        PreferenceManager.OnActivityResultListener {
-
-    private static final int REQUEST_CODE_BONDED_DEVICE = 270;
+public class ViewAllBluetoothDevicesPreferenceController extends BasePreferenceController {
     private DashboardFragment mFragment;
 
     public ViewAllBluetoothDevicesPreferenceController(Context context, String preferenceKey) {
@@ -60,29 +52,18 @@
     @Override
     public boolean handlePreferenceTreeClick(Preference preference) {
         if (TextUtils.equals(preference.getKey(), getPreferenceKey())) {
-            launchBluetoothPairingDetail();
+            launchConnectedDevicePage();
             return true;
         }
 
         return false;
     }
 
-    @Override
-    public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
-        // If back from BONDED device page, then no need to show scan result again.
-        // Finish the fragment.
-        if (requestCode == REQUEST_CODE_BONDED_DEVICE && resultCode == RESULT_OK) {
-            mFragment.finish();
-        }
-        return false;
-    }
-
     @VisibleForTesting
-    void launchBluetoothPairingDetail() {
+    void launchConnectedDevicePage() {
         new SubSettingLauncher(mContext)
-                .setDestination(BluetoothPairingDetail.class.getName())
+                .setDestination(ConnectedDeviceDashboardFragment.class.getName())
                 .setSourceMetricsCategory(mFragment.getMetricsCategory())
-                .setResultListener(mFragment, REQUEST_CODE_BONDED_DEVICE)
                 .launch();
     }
 }
diff --git a/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java b/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java
index a3cbb57..5a3b13a 100644
--- a/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java
@@ -27,16 +27,21 @@
 import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
 import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE;
 
+import android.app.Activity;
 import android.app.settings.SettingsEnums;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.database.ContentObserver;
+import android.icu.text.ListFormatter;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.util.ArrayMap;
+import android.util.Pair;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -48,9 +53,12 @@
 import androidx.preference.Preference;
 import androidx.recyclerview.widget.RecyclerView;
 
+import com.android.internal.accessibility.dialog.AccessibilityTarget;
+import com.android.internal.accessibility.dialog.AccessibilityTargetHelper;
 import com.android.settings.R;
 import com.android.settings.SetupWizardUtils;
 import com.android.settings.accessibility.AccessibilitySetupWizardUtils;
+import com.android.settings.accessibility.Flags;
 import com.android.settings.accessibility.PreferredShortcuts;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.dashboard.DashboardFragment;
@@ -60,7 +68,10 @@
 import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.GlifPreferenceLayout;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -171,6 +182,36 @@
         registerSettingsObserver();
     }
 
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        super.onCreatePreferences(savedInstanceState, rootKey);
+
+        Activity activity = getActivity();
+
+        if (!activity.getIntent().getAction().equals(
+                Settings.ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS)
+                || !Flags.editShortcutsInFullScreen()) {
+            return;
+        }
+
+        // TODO(b/325664350): Implement shortcut type for "all shortcuts"
+        List<AccessibilityTarget> accessibilityTargets =
+                AccessibilityTargetHelper.getInstalledTargets(
+                        activity.getBaseContext(), AccessibilityManager.ACCESSIBILITY_SHORTCUT_KEY);
+
+        Pair<String, String> titles = getTitlesFromAccessibilityTargetList(
+                mShortcutTargets,
+                accessibilityTargets,
+                activity.getResources()
+        );
+
+        activity.setTitle(titles.first);
+
+        String categoryKey = activity.getResources().getString(
+                R.string.accessibility_shortcut_description_pref);
+        findPreference(categoryKey).setTitle(titles.second);
+    }
+
     @NonNull
     @Override
     public RecyclerView onCreateRecyclerView(
@@ -275,7 +316,6 @@
         }
 
         mShortcutTargets = Set.of(targets);
-        // TODO(318748373): use 'targets' to populate title when no title is given
     }
 
     @Override
@@ -356,4 +396,52 @@
         // A11y Nav Button
         refreshPreferenceController(NavButtonShortcutOptionController.class);
     }
+
+    /**
+     * Generates a title & subtitle pair describing the features whose shortcuts are being edited.
+     *
+     * @param shortcutTargets string list of component names corresponding to
+     *                        the relevant shortcut targets.
+     * @param accessibilityTargets list of accessibility targets
+     *                             to try and find corresponding labels in.
+     * @return pair of strings to be used as page title and subtitle.
+     * If there is only one shortcut label, It is displayed in the title and the subtitle is null.
+     * Otherwise, the title is a generic prompt and the subtitle lists all shortcut labels.
+     */
+    @VisibleForTesting
+    static Pair<String, String> getTitlesFromAccessibilityTargetList(
+            Set<String> shortcutTargets,
+            List<AccessibilityTarget> accessibilityTargets,
+            Resources resources) {
+        ArrayList<CharSequence> featureLabels = new ArrayList<>();
+
+        Map<String, CharSequence> accessibilityTargetLabels = new ArrayMap<>();
+        accessibilityTargets.forEach((target) -> accessibilityTargetLabels.put(
+                target.getId(), target.getLabel()));
+
+        for (String target: shortcutTargets) {
+            if (accessibilityTargetLabels.containsKey(target)) {
+                featureLabels.add(accessibilityTargetLabels.get(target));
+            } else {
+                throw new IllegalStateException("Shortcut target does not have a label: " + target);
+            }
+        }
+
+        if (featureLabels.size() == 1) {
+            return new Pair<>(
+                    resources.getString(
+                            R.string.accessibility_shortcut_title, featureLabels.get(0)),
+                    null
+            );
+        } else if (featureLabels.size() == 0) {
+            throw new IllegalStateException("Found no labels for any shortcut targets.");
+        } else {
+            return new Pair<>(
+                    resources.getString(R.string.accessibility_shortcut_edit_screen_title),
+                    resources.getString(
+                            R.string.accessibility_shortcut_edit_screen_prompt,
+                            ListFormatter.getInstance().format(featureLabels))
+            );
+        }
+    }
 }
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
index 50134ba..4e39070 100644
--- a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
@@ -113,8 +113,9 @@
                 .setFinishPrimaryWithSecondary(finishPrimaryWithSecondary)
                 .setFinishSecondaryWithPrimary(finishSecondaryWithPrimary)
                 .setClearTop(clearTop)
-                .setMinWidthDp(ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthDp())
-                .setMinSmallestWidthDp(ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthDp())
+                .setMinWidthDp(ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthDp(context))
+                .setMinSmallestWidthDp(
+                        ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthDp(context))
                 .setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
                 .setDefaultSplitAttributes(attributes)
                 .build();
@@ -234,8 +235,9 @@
                 .build();
         final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule.Builder(
                 activityFilters, intent)
-                .setMinWidthDp(ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthDp())
-                .setMinSmallestWidthDp(ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthDp())
+                .setMinWidthDp(ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthDp(mContext))
+                .setMinSmallestWidthDp(
+                        ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthDp(mContext))
                 .setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
                 .setSticky(false)
                 .setFinishPrimaryWithPlaceholder(SplitRule.FinishBehavior.ADJACENT)
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java b/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
index 74a9673..b91e0e5 100644
--- a/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
@@ -33,11 +33,6 @@
 
 /** An util class collecting all common methods for the embedding activity features. */
 public class ActivityEmbeddingUtils {
-    // The smallest value of current width of the window when the split should be used.
-    private static final int MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP = 720;
-    // The smallest value of the smallest-width (sw) of the window in any rotation when
-    // the split should be used.
-    private static final int MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP = 600;
     // The minimum width of the activity to show the regular homepage layout.
     private static final float MIN_REGULAR_HOMEPAGE_LAYOUT_WIDTH_DP = 380f;
 
@@ -58,16 +53,16 @@
     private static final String TAG = "ActivityEmbeddingUtils";
 
     /** Get the smallest width dp of the window when the split should be used. */
-    public static int getMinCurrentScreenSplitWidthDp() {
-        return MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP;
+    public static int getMinCurrentScreenSplitWidthDp(Context context) {
+        return context.getResources().getInteger(R.integer.config_activity_embed_split_min_cur_dp);
     }
 
     /**
      * Get the smallest dp value of the smallest-width (sw) of the window in any rotation when
      * the split should be used.
      */
-    public static int getMinSmallestScreenSplitWidthDp() {
-        return MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP;
+    public static int getMinSmallestScreenSplitWidthDp(Context context) {
+        return context.getResources().getInteger(R.integer.config_activity_embed_split_min_sw_dp);
     }
 
     /**
diff --git a/src/com/android/settings/applications/UsageAccessDetails.java b/src/com/android/settings/applications/UsageAccessDetails.java
index 6976149..e111942 100644
--- a/src/com/android/settings/applications/UsageAccessDetails.java
+++ b/src/com/android/settings/applications/UsageAccessDetails.java
@@ -174,7 +174,7 @@
 
         if (shouldEnable && !hasAccess) {
             mSwitchPref.checkEcmRestrictionAndSetDisabled(AppOpsManager.OPSTR_GET_USAGE_STATS,
-                    mPackageName, mPackageInfo.applicationInfo.uid);
+                    mPackageName);
             shouldEnable = !mSwitchPref.isDisabledByEcm();
         }
 
diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
index 82d55f3..90d733e 100644
--- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
+++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
@@ -24,6 +24,7 @@
 import android.app.AppOpsManager;
 import android.app.KeyguardManager;
 import android.app.admin.DevicePolicyManager;
+import android.app.ecm.EnhancedConfirmationManager;
 import android.app.settings.SettingsEnums;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -490,12 +491,23 @@
                 return true;
             case ACCESS_RESTRICTED_SETTINGS:
                 showLockScreen(getContext(), () -> {
-                    final AppOpsManager appOpsManager = getContext().getSystemService(
-                            AppOpsManager.class);
-                    appOpsManager.setMode(AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS,
-                            getUid(),
-                            getPackageName(),
-                            AppOpsManager.MODE_ALLOWED);
+                    if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()
+                            && android.security.Flags.extendEcmToAllSettings()) {
+                        EnhancedConfirmationManager manager = getContext().getSystemService(
+                                EnhancedConfirmationManager.class);
+                        try {
+                            manager.clearRestriction(getPackageName());
+                        } catch (NameNotFoundException e) {
+                            Log.e(TAG, "Exception when retrieving package:" + getPackageName(), e);
+                        }
+                    } else {
+                        final AppOpsManager appOpsManager = getContext().getSystemService(
+                                AppOpsManager.class);
+                        appOpsManager.setMode(AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS,
+                                getUid(),
+                                getPackageName(),
+                                AppOpsManager.MODE_ALLOWED);
+                    }
                     getActivity().invalidateOptionsMenu();
                     final String toastString = getContext().getString(
                             R.string.toast_allows_restricted_settings_successfully,
@@ -527,14 +539,25 @@
     }
 
     private boolean shouldShowAccessRestrictedSettings() {
-        try {
-            final int mode = getSystemService(AppOpsManager.class).noteOpNoThrow(
-                    AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, getUid(),
-                    getPackageName());
-            return mode == AppOpsManager.MODE_IGNORED;
-        } catch (Exception e) {
-            // Fallback in case if app ops is not available in testing.
-            return false;
+        if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()
+                && android.security.Flags.extendEcmToAllSettings()) {
+            try {
+                return getSystemService(EnhancedConfirmationManager.class)
+                        .isClearRestrictionAllowed(getPackageName());
+            } catch (NameNotFoundException e) {
+                Log.e(TAG, "Exception when retrieving package:" + getPackageName(), e);
+                return false;
+            }
+        } else {
+            try {
+                final int mode = getSystemService(AppOpsManager.class).noteOpNoThrow(
+                        AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, getUid(),
+                        getPackageName());
+                return mode == AppOpsManager.MODE_IGNORED;
+            } catch (Exception e) {
+                // Fallback in case if app ops is not available in testing.
+                return false;
+            }
         }
     }
 
diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
index 949577b..640f21d 100644
--- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
+++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
@@ -222,7 +222,7 @@
         pref.setOnPreferenceChangeListener((preference, newValue) -> false);
         pref.setSingleLineTitle(true);
         pref.checkEcmRestrictionAndSetDisabled(Manifest.permission.BIND_DEVICE_ADMIN,
-                item.getPackageName(), item.getUid());
+                item.getPackageName());
     }
 
     /**
diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceController.java b/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceController.java
index 00f0625..70a31b8 100644
--- a/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceController.java
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceController.java
@@ -24,6 +24,7 @@
 import android.content.pm.PackageManager;
 import android.os.AsyncTask;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceFragmentCompat;
@@ -42,7 +43,7 @@
     private NotificationManager mNm;
     private PackageManager mPm;
     // The appOp representing this preference
-    private String mAppOpStr;
+    private String mSettingIdentifier;
 
     public ApprovalPreferenceController(Context context, String key) {
         super(context, key);
@@ -76,8 +77,9 @@
     /**
      * Set the associated appOp for the Setting
      */
-    public ApprovalPreferenceController setAppOpStr(String appOpStr) {
-        mAppOpStr = appOpStr;
+    @NonNull
+    public ApprovalPreferenceController setSettingIdentifier(@NonNull String settingIdentifier) {
+        mSettingIdentifier = settingIdentifier;
         return this;
     }
 
@@ -118,14 +120,15 @@
             }
         });
 
-        if (android.security.Flags.extendEcmToAllSettings()) {
+        if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()
+                && android.security.Flags.extendEcmToAllSettings()) {
             if (!isAllowedCn && !isEnabled) {
                 preference.setEnabled(false);
             } else if (isEnabled) {
                 preference.setEnabled(true);
             } else {
-                preference.checkEcmRestrictionAndSetDisabled(mAppOpStr,
-                        mCn.getPackageName(), mPkgInfo.applicationInfo.uid);
+                preference.checkEcmRestrictionAndSetDisabled(mSettingIdentifier,
+                        mCn.getPackageName());
             }
         } else {
             preference.updateState(
diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java b/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
index 89767dd..e885d5c 100644
--- a/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
@@ -103,7 +103,7 @@
                 .setCn(mComponentName)
                 .setNm(context.getSystemService(NotificationManager.class))
                 .setPm(mPm)
-                .setAppOpStr(AppOpsManager.OPSTR_ACCESS_NOTIFICATIONS)
+                .setSettingIdentifier(AppOpsManager.OPSTR_ACCESS_NOTIFICATIONS)
                 .setParent(this);
         use(HeaderPreferenceController.class)
                 .setFragment(this)
diff --git a/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java b/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java
index 4c9f813..2a5f1db 100644
--- a/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java
+++ b/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java
@@ -25,7 +25,6 @@
 
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
-import androidx.preference.DropDownPreference;
 import androidx.preference.Preference;
 import androidx.preference.Preference.OnPreferenceChangeListener;
 import androidx.preference.PreferenceScreen;
@@ -38,6 +37,7 @@
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.widget.EmptyTextSettings;
+import com.android.settingslib.RestrictedDropDownPreference;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 import com.android.settingslib.applications.ApplicationsState.Callbacks;
@@ -52,6 +52,8 @@
 public class PremiumSmsAccess extends EmptyTextSettings
         implements Callback, Callbacks, OnPreferenceChangeListener {
 
+    private static final String ECM_RESTRICTION_KEY = "android:premium_sms_access";
+
     private ApplicationsState mApplicationsState;
     private AppStateSmsPremBridge mSmsBackend;
     private Session mSession;
@@ -205,7 +207,7 @@
 
     }
 
-    private class PremiumSmsPreference extends DropDownPreference {
+    private class PremiumSmsPreference extends RestrictedDropDownPreference {
         private final AppEntry mAppEntry;
 
         public PremiumSmsPreference(AppEntry appEntry, Context context) {
@@ -224,6 +226,7 @@
             });
             setValue(String.valueOf(getCurrentValue()));
             setSummary("%s");
+            this.checkEcmRestrictionAndSetDisabled(ECM_RESTRICTION_KEY, appEntry.info.packageName);
         }
 
         private int getCurrentValue() {
diff --git a/src/com/android/settings/biometrics/BiometricUtils.java b/src/com/android/settings/biometrics/BiometricUtils.java
index 53892bd..3376d86 100644
--- a/src/com/android/settings/biometrics/BiometricUtils.java
+++ b/src/com/android/settings/biometrics/BiometricUtils.java
@@ -25,6 +25,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.hardware.biometrics.BiometricManager;
 import android.hardware.biometrics.SensorProperties;
 import android.hardware.face.FaceManager;
 import android.hardware.face.FaceSensorPropertiesInternal;
@@ -65,6 +66,7 @@
  */
 public class BiometricUtils {
     private static final String TAG = "BiometricUtils";
+    public static final String EXTRA_ENROLL_REASON = BiometricManager.EXTRA_ENROLL_REASON;
 
     /** The character ' • ' to separate the setup choose options */
     public static final String SEPARATOR = " \u2022 ";
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java
index 62e9757..6862bc9 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java
@@ -265,6 +265,8 @@
         }
 
         intent.putExtra(EXTRA_KEY_REQUIRE_DIVERSITY, !mSwitchDiversity.isChecked());
+        intent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+                getIntent().getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1));
 
         if (!mSwitchDiversity.isChecked() && mAccessibilityEnabled) {
             FaceEnrollAccessibilityDialog dialog = FaceEnrollAccessibilityDialog.newInstance();
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java b/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
index e8bd0ef..da3689a 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
@@ -165,7 +165,7 @@
             disabledFeatures[i] = mDisabledFeatures.get(i);
         }
 
-        return new FaceEnrollSidecar(disabledFeatures);
+        return new FaceEnrollSidecar(disabledFeatures, getIntent());
     }
 
     @Override
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
index eb50e08..b0996a4 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
@@ -484,6 +484,9 @@
     protected Intent getEnrollingIntent() {
         Intent intent = new Intent(this, FaceEnrollEducation.class);
         WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
+        intent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+                getIntent().getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1));
+
         return intent;
     }
 
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollSidecar.java b/src/com/android/settings/biometrics/face/FaceEnrollSidecar.java
index de713dd..b7ba1b5 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollSidecar.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollSidecar.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.app.settings.SettingsEnums;
+import android.content.Intent;
 import android.hardware.face.FaceManager;
 
 import com.android.settings.biometrics.BiometricEnrollSidecar;
@@ -33,8 +34,11 @@
 
     private FaceUpdater mFaceUpdater;
 
-    public FaceEnrollSidecar(int[] disabledFeatures) {
+    private Intent mIntent;
+
+    public FaceEnrollSidecar(int[] disabledFeatures, Intent intent) {
         mDisabledFeatures = Arrays.copyOf(disabledFeatures, disabledFeatures.length);
+        mIntent = intent;
     }
 
     @Override
@@ -47,7 +51,7 @@
     public void startEnrollment() {
         super.startEnrollment();
         mFaceUpdater.enroll(mUserId, mToken, mEnrollmentCancel,
-                mEnrollmentCallback, mDisabledFeatures);
+                mEnrollmentCallback, mDisabledFeatures, mIntent);
     }
 
     private FaceManager.EnrollmentCallback mEnrollmentCallback
diff --git a/src/com/android/settings/biometrics/face/FaceSettingsRemoveButtonPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsRemoveButtonPreferenceController.java
index 797364b..ae5b62b 100644
--- a/src/com/android/settings/biometrics/face/FaceSettingsRemoveButtonPreferenceController.java
+++ b/src/com/android/settings/biometrics/face/FaceSettingsRemoveButtonPreferenceController.java
@@ -29,7 +29,9 @@
 import android.view.View;
 import android.widget.Button;
 import android.widget.Toast;
+import android.window.OnBackInvokedCallback;
 
+import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
@@ -57,9 +59,14 @@
     private static final String TAG = "FaceSettings/Remove";
     static final String KEY = "security_settings_face_delete_faces_container";
 
-    public static class ConfirmRemoveDialog extends InstrumentedDialogFragment {
+    public static class ConfirmRemoveDialog extends InstrumentedDialogFragment
+            implements OnBackInvokedCallback {
         private static final String KEY_IS_CONVENIENCE = "is_convenience";
         private DialogInterface.OnClickListener mOnClickListener;
+        @Nullable
+        private AlertDialog mDialog = null;
+        @Nullable
+        private Preference mFaceUnlockPreference = null;
 
         /** Returns the new instance of the class */
         public static ConfirmRemoveDialog newInstance(boolean isConvenience) {
@@ -99,14 +106,41 @@
                     .setMessage(dialogMessageRes)
                     .setPositiveButton(R.string.delete, mOnClickListener)
                     .setNegativeButton(R.string.cancel, mOnClickListener);
-            AlertDialog dialog = builder.create();
-            dialog.setCanceledOnTouchOutside(false);
-            return dialog;
+            mDialog = builder.create();
+            mDialog.setCanceledOnTouchOutside(false);
+            mDialog.getOnBackInvokedDispatcher().registerOnBackInvokedCallback(0, this);
+            return mDialog;
         }
 
         public void setOnClickListener(DialogInterface.OnClickListener listener) {
             mOnClickListener = listener;
         }
+
+        public void setPreference(@Nullable Preference preference) {
+            mFaceUnlockPreference = preference;
+        }
+
+        public void unregisterOnBackInvokedCallback() {
+            if (mDialog != null) {
+                mDialog.getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(this);
+            }
+        }
+
+        @Override
+        public void onBackInvoked() {
+            if (mDialog != null) {
+                mDialog.cancel();
+            }
+            unregisterOnBackInvokedCallback();
+
+            if (mFaceUnlockPreference != null) {
+                final Button removeButton = ((LayoutPreference) mFaceUnlockPreference)
+                        .findViewById(R.id.security_settings_face_settings_remove_button);
+                if (removeButton != null) {
+                    removeButton.setEnabled(true);
+                }
+            }
+        }
     }
 
     interface Listener {
@@ -171,6 +205,13 @@
                 mButton.setEnabled(true);
                 mRemoving = false;
             }
+
+            final ConfirmRemoveDialog removeDialog =
+                    (ConfirmRemoveDialog) mActivity.getSupportFragmentManager()
+                            .findFragmentByTag(ConfirmRemoveDialog.class.getName());
+            if (removeDialog != null) {
+                removeDialog.unregisterOnBackInvokedCallback();
+            }
         }
     };
 
@@ -210,6 +251,7 @@
                 (ConfirmRemoveDialog) mActivity.getSupportFragmentManager()
                         .findFragmentByTag(ConfirmRemoveDialog.class.getName());
         if (removeDialog != null) {
+            removeDialog.setPreference(mPreference);
             mRemoving = true;
             removeDialog.setOnClickListener(mOnConfirmDialogClickListener);
         }
diff --git a/src/com/android/settings/biometrics/face/FaceUpdater.java b/src/com/android/settings/biometrics/face/FaceUpdater.java
index 57c1195..ddb6812 100644
--- a/src/com/android/settings/biometrics/face/FaceUpdater.java
+++ b/src/com/android/settings/biometrics/face/FaceUpdater.java
@@ -17,8 +17,10 @@
 package com.android.settings.biometrics.face;
 
 import android.content.Context;
+import android.content.Intent;
 import android.hardware.face.Face;
 import android.hardware.face.FaceEnrollCell;
+import android.hardware.face.FaceEnrollOptions;
 import android.hardware.face.FaceManager;
 import android.os.CancellationSignal;
 import android.view.Surface;
@@ -26,6 +28,7 @@
 import androidx.annotation.Nullable;
 
 import com.android.settings.Utils;
+import com.android.settings.biometrics.BiometricUtils;
 import com.android.settings.safetycenter.BiometricsSafetySource;
 
 /**
@@ -49,19 +52,19 @@
 
     /** Wrapper around the {@link FaceManager#enroll} method. */
     public void enroll(int userId, byte[] hardwareAuthToken, CancellationSignal cancel,
-            FaceManager.EnrollmentCallback callback, int[] disabledFeatures) {
+            FaceManager.EnrollmentCallback callback, int[] disabledFeatures, Intent intent) {
         this.enroll(userId, hardwareAuthToken, cancel,
                 new NotifyingEnrollmentCallback(mContext, callback), disabledFeatures,
-                null, false);
+                null, false, intent);
     }
 
     /** Wrapper around the {@link FaceManager#enroll} method. */
     public void enroll(int userId, byte[] hardwareAuthToken, CancellationSignal cancel,
             FaceManager.EnrollmentCallback callback, int[] disabledFeatures,
-            @Nullable Surface previewSurface, boolean debugConsent) {
+            @Nullable Surface previewSurface, boolean debugConsent, Intent intent) {
         mFaceManager.enroll(userId, hardwareAuthToken, cancel,
                 new NotifyingEnrollmentCallback(mContext, callback), disabledFeatures,
-                previewSurface, debugConsent);
+                previewSurface, debugConsent, toFaceEnrollOptions(intent));
     }
 
     /** Wrapper around the {@link FaceManager#remove} method. */
@@ -135,4 +138,14 @@
             BiometricsSafetySource.onBiometricsChanged(mContext); // biometrics data changed
         }
     }
+
+    private FaceEnrollOptions toFaceEnrollOptions(Intent intent) {
+        final int reason = intent.getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1);
+        final FaceEnrollOptions.Builder builder = new FaceEnrollOptions.Builder();
+        builder.setEnrollReason(FaceEnrollOptions.ENROLL_REASON_UNKNOWN);
+        if (reason != -1) {
+            builder.setEnrollReason(reason);
+        }
+        return builder.build();
+    }
 }
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index 175e8f9..90b9346 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -352,7 +352,7 @@
     @Override
     protected BiometricEnrollSidecar getSidecar() {
         final FingerprintEnrollSidecar sidecar = new FingerprintEnrollSidecar(this,
-                FingerprintManager.ENROLL_ENROLL);
+                FingerprintManager.ENROLL_ENROLL, getIntent());
         return sidecar;
     }
 
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
index be3a769..6b7538a 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
@@ -292,6 +292,8 @@
     @Override
     protected Intent getFingerprintEnrollingIntent() {
         final Intent ret = super.getFingerprintEnrollingIntent();
+        ret.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+                getIntent().getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1));
         if (Flags.udfpsEnrollCalibration()) {
             if (mCalibrator != null) {
                 ret.putExtras(mCalibrator.getExtrasForNextIntent(true));
@@ -349,7 +351,7 @@
                 FingerprintEnrollEnrolling.TAG_SIDECAR);
         if (mSidecar == null) {
             mSidecar = new FingerprintEnrollSidecar(this,
-                    FingerprintManager.ENROLL_FIND_SENSOR);
+                    FingerprintManager.ENROLL_FIND_SENSOR, getIntent());
             getSupportFragmentManager().beginTransaction()
                     .add(mSidecar, FingerprintEnrollEnrolling.TAG_SIDECAR)
                     .commitAllowingStateLoss();
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
index 242b745..f92cfbf 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
@@ -59,7 +59,6 @@
 import java.util.List;
 
 public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
-
     private static final String TAG = "FingerprintIntro";
 
     @VisibleForTesting
@@ -388,6 +387,8 @@
                 intent.putExtras(mCalibrator.getExtrasForNextIntent(false));
             }
         }
+        intent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+                getIntent().getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1));
         return intent;
     }
 
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java
index 493302b..52d7d2b 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java
@@ -21,6 +21,8 @@
 import android.app.Activity;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
+import android.content.Intent;
+import android.hardware.fingerprint.FingerprintEnrollOptions;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.SystemClock;
 import android.util.Log;
@@ -28,6 +30,9 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.R;
 import com.android.settings.biometrics.BiometricEnrollSidecar;
+import com.android.settings.biometrics.BiometricUtils;
+
+import com.google.android.setupcompat.util.WizardManagerHelper;
 
 /**
  * Sidecar fragment to handle the state around fingerprint enrollment.
@@ -39,15 +44,18 @@
     private @FingerprintManager.EnrollReason int mEnrollReason;
     private final MessageDisplayController mMessageDisplayController;
     private final boolean mMessageDisplayControllerFlag;
+    private final Intent mIntent;
 
     /**
      * Create a new FingerprintEnrollSidecar object.
-     * @param context associated context
+     *
+     * @param context      associated context
      * @param enrollReason reason for enrollment
      */
     public FingerprintEnrollSidecar(Context context,
-            @FingerprintManager.EnrollReason int enrollReason) {
+            @FingerprintManager.EnrollReason int enrollReason, Intent intent) {
         mEnrollReason = enrollReason;
+        mIntent = intent;
 
         int helpMinimumDisplayTime = context.getResources().getInteger(
                 R.integer.enrollment_help_minimum_time_display);
@@ -85,14 +93,21 @@
             return;
         }
 
+        if (mIntent.getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1) == -1) {
+            final boolean isSuw = WizardManagerHelper.isAnySetupWizard(mIntent);
+            mIntent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+                    isSuw ? FingerprintEnrollOptions.ENROLL_REASON_SUW :
+                            FingerprintEnrollOptions.ENROLL_REASON_SETTINGS);
+        }
+
         if (mEnrollReason == ENROLL_ENROLL && mMessageDisplayControllerFlag) {
             //API calls need to be processed for {@link FingerprintEnrollEnrolling}
             mFingerprintUpdater.enroll(mToken, mEnrollmentCancel, mUserId,
-                    mMessageDisplayController, mEnrollReason);
+                    mMessageDisplayController, mEnrollReason, mIntent);
         } else {
             //No processing required for {@link FingerprintEnrollFindSensor}
             mFingerprintUpdater.enroll(mToken, mEnrollmentCancel, mUserId, mEnrollmentCallback,
-                    mEnrollReason);
+                    mEnrollReason, mIntent);
         }
     }
 
@@ -100,7 +115,8 @@
         mEnrollReason = enrollReason;
     }
 
-    @VisibleForTesting FingerprintManager.EnrollmentCallback mEnrollmentCallback
+    @VisibleForTesting
+    FingerprintManager.EnrollmentCallback mEnrollmentCallback
             = new FingerprintManager.EnrollmentCallback() {
 
         @Override
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintUpdater.java b/src/com/android/settings/biometrics/fingerprint/FingerprintUpdater.java
index 306b1a3..ea9abf1 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintUpdater.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintUpdater.java
@@ -17,13 +17,16 @@
 package com.android.settings.biometrics.fingerprint;
 
 import android.content.Context;
+import android.content.Intent;
 import android.hardware.fingerprint.Fingerprint;
+import android.hardware.fingerprint.FingerprintEnrollOptions;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.CancellationSignal;
 
 import androidx.annotation.Nullable;
 
 import com.android.settings.Utils;
+import com.android.settings.biometrics.BiometricUtils;
 import com.android.settings.safetycenter.BiometricsSafetySource;
 
 /**
@@ -48,9 +51,10 @@
     /** Wrapper around the {@link FingerprintManager#enroll} method. */
     public void enroll(byte [] hardwareAuthToken, CancellationSignal cancel, int userId,
             FingerprintManager.EnrollmentCallback callback,
-            @FingerprintManager.EnrollReason int enrollReason) {
+            @FingerprintManager.EnrollReason int enrollReason, Intent intent) {
         mFingerprintManager.enroll(hardwareAuthToken, cancel, userId,
-                new NotifyingEnrollmentCallback(mContext, callback), enrollReason);
+                new NotifyingEnrollmentCallback(mContext, callback), enrollReason,
+                toFingerprintEnrollOptions(intent));
     }
 
     /** Wrapper around the {@link FingerprintManager#remove} method. */
@@ -138,4 +142,14 @@
             BiometricsSafetySource.onBiometricsChanged(mContext); // biometrics data changed
         }
     }
+
+    private FingerprintEnrollOptions toFingerprintEnrollOptions(Intent intent) {
+        final int reason = intent.getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1);
+        final FingerprintEnrollOptions.Builder builder = new FingerprintEnrollOptions.Builder();
+        builder.setEnrollReason(FingerprintEnrollOptions.ENROLL_REASON_UNKNOWN);
+        if (reason != -1) {
+            builder.setEnrollReason(reason);
+        }
+        return builder.build();
+    }
 }
diff --git a/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java b/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java
index abc31c9..60ced6e 100644
--- a/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java
+++ b/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java
@@ -33,11 +33,14 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.R;
 
 import java.util.function.Function;
 
 public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature {
+    @VisibleForTesting
+    public static final int HELP_ANIMATOR_DURATION = 550;
 
     @Nullable
     private FingerprintManager mFingerprintManager = null;
@@ -96,12 +99,11 @@
     @Override
     public Animator getHelpAnimator(@NonNull View target) {
         final float translationX = 40;
-        final int duration = 550;
         final ObjectAnimator help = ObjectAnimator.ofFloat(target,
                 "translationX" /* propertyName */,
                 0, translationX, -1 * translationX, translationX, 0f);
         help.setInterpolator(new AccelerateInterpolator());
-        help.setDuration(duration);
+        help.setDuration(HELP_ANIMATOR_DURATION);
         help.setAutoCancel(false);
         return help;
     }
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt
index 135a36c..900f7cf 100644
--- a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt
@@ -18,12 +18,16 @@
 
 import android.content.Context
 import android.content.Intent
+import android.hardware.biometrics.BiometricConstants;
+import android.hardware.biometrics.BiometricFingerprintConstants
+import android.hardware.fingerprint.FingerprintEnrollOptions;
 import android.hardware.fingerprint.FingerprintManager
 import android.hardware.fingerprint.FingerprintManager.GenerateChallengeCallback
 import android.hardware.fingerprint.FingerprintManager.RemovalCallback
 import android.os.CancellationSignal
 import android.util.Log
 import com.android.settings.biometrics.GatekeeperPasswordProvider
+import com.android.settings.biometrics.BiometricUtils
 import com.android.settings.biometrics.fingerprint2.conversion.Util.toEnrollError
 import com.android.settings.biometrics.fingerprint2.conversion.Util.toOriginalReason
 import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSensorRepository
@@ -35,6 +39,8 @@
 import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintFlow
 import com.android.settings.biometrics.fingerprint2.lib.model.SetupWizard
 import com.android.settings.password.ChooseLockSettingsHelper
+import com.android.systemui.biometrics.shared.model.toFingerprintSensor
+import com.google.android.setupcompat.util.WizardManagerHelper
 import kotlin.coroutines.resume
 import kotlin.coroutines.suspendCoroutine
 import kotlinx.coroutines.CancellableContinuation
@@ -60,6 +66,7 @@
   private val gatekeeperPasswordProvider: GatekeeperPasswordProvider,
   private val pressToAuthInteractor: PressToAuthInteractor,
   private val fingerprintFlow: FingerprintFlow,
+  private val intent: Intent,
 ) : FingerprintManagerInteractor {
 
   private val maxFingerprints =
@@ -158,12 +165,21 @@
       }
 
     val cancellationSignal = CancellationSignal()
+
+    if (intent.getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1) === -1) {
+      val isSuw: Boolean = WizardManagerHelper.isAnySetupWizard(intent)
+      intent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+      if (isSuw) FingerprintEnrollOptions.ENROLL_REASON_SUW else
+        FingerprintEnrollOptions.ENROLL_REASON_SETTINGS)
+    }
+
     fingerprintManager.enroll(
       hardwareAuthToken,
       cancellationSignal,
       applicationContext.userId,
       enrollmentCallback,
       enrollReason.toOriginalReason(),
+      toFingerprintEnrollOptions(intent)
     )
     awaitClose {
       // If the stream has not been ended, and the user has stopped collecting the flow
@@ -244,4 +260,15 @@
         applicationContext.userId,
       )
     }
+
+  private fun toFingerprintEnrollOptions(intent: Intent): FingerprintEnrollOptions {
+    val reason: Int =
+      intent.getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1)
+    val builder: FingerprintEnrollOptions.Builder = FingerprintEnrollOptions.Builder()
+    builder.setEnrollReason(FingerprintEnrollOptions.ENROLL_REASON_UNKNOWN)
+    if (reason != -1) {
+      builder.setEnrollReason(reason)
+    }
+    return builder.build()
+  }
 }
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/activity/FingerprintEnrollmentV2Activity.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/activity/FingerprintEnrollmentV2Activity.kt
index 9f3935b..d26b812 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/activity/FingerprintEnrollmentV2Activity.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/activity/FingerprintEnrollmentV2Activity.kt
@@ -37,13 +37,13 @@
 import com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED
 import com.android.settings.biometrics.GatekeeperPasswordProvider
 import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSensorRepositoryImpl
-import com.android.settings.biometrics.fingerprint2.domain.interactor.PressToAuthInteractorImpl
 import com.android.settings.biometrics.fingerprint2.domain.interactor.AccessibilityInteractorImpl
 import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl
 import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractor
 import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractorImpl
 import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractor
 import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractorImpl
+import com.android.settings.biometrics.fingerprint2.domain.interactor.PressToAuthInteractorImpl
 import com.android.settings.biometrics.fingerprint2.lib.model.Default
 import com.android.settings.biometrics.fingerprint2.lib.model.SetupWizard
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollConfirmationV2Fragment
@@ -54,6 +54,7 @@
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintAction
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollConfirmationViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollEnrollingViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollIntroViewModel
@@ -70,6 +71,7 @@
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintScrollViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.GatekeeperInfo
+import com.android.settings.flags.Flags
 import com.android.settings.password.ChooseLockGeneric
 import com.android.settings.password.ChooseLockSettingsHelper
 import com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE
@@ -96,6 +98,8 @@
   private lateinit var fingerprintScrollViewModel: FingerprintScrollViewModel
   private lateinit var backgroundViewModel: BackgroundViewModel
   private lateinit var fingerprintFlowViewModel: FingerprintFlowViewModel
+  private lateinit var fingerprintEnrollConfirmationViewModel:
+    FingerprintEnrollConfirmationViewModel
   private val coroutineDispatcher = Dispatchers.Default
 
   /** Result listener for ChooseLock activity flow. */
@@ -155,6 +159,15 @@
     // TODO(b/299573056): Show split screen dialog when it's in multi window mode.
     setContentView(R.layout.fingerprint_v2_enroll_main)
 
+    if (!Flags.fingerprintV2Enrollment()) {
+      check(false) {
+        "fingerprint enrollment v2 is not enabled, " +
+          "please run adb shell device_config put " +
+          "biometrics_framework com.android.settings.flags.fingerprint_v2_enrollment true"
+      }
+      finish()
+    }
+
     setTheme(SetupWizardUtils.getTheme(applicationContext, intent))
     ThemeHelper.trySetDynamicColor(applicationContext)
 
@@ -191,6 +204,7 @@
         GatekeeperPasswordProvider(LockPatternUtils(context)),
         pressToAuthInteractor,
         enrollType,
+        getIntent(),
       )
 
     var challenge: Long? = intent.getExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE) as Long?
@@ -292,6 +306,15 @@
       ),
     )[RFPSViewModel::class.java]
 
+    fingerprintEnrollConfirmationViewModel =
+      ViewModelProvider(
+        this,
+        FingerprintEnrollConfirmationViewModel.FingerprintEnrollConfirmationViewModelFactory(
+          navigationViewModel,
+          fingerprintManagerInteractor,
+        ),
+      )[FingerprintEnrollConfirmationViewModel::class.java]
+
     lifecycleScope.launch {
       navigationViewModel.currentStep.collect { step ->
         if (step is Init) {
@@ -303,6 +326,7 @@
 
     lifecycleScope.launch {
       navigationViewModel.navigateTo.filterNotNull().collect { step ->
+        Log.d(TAG, "navigateTo: $step")
         if (step is ConfirmDeviceCredential) {
           launchConfirmOrChooseLock(userId)
           navigationViewModel.update(
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollConfirmationV2Fragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollConfirmationV2Fragment.kt
index fd07a95..d8c1c93 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollConfirmationV2Fragment.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollConfirmationV2Fragment.kt
@@ -17,7 +17,21 @@
 package com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment
 
 import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.annotation.VisibleForTesting
 import androidx.fragment.app.Fragment
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import com.android.settings.R
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollConfirmationViewModel
+import com.google.android.setupcompat.template.FooterBarMixin
+import com.google.android.setupcompat.template.FooterButton
+import com.google.android.setupdesign.GlifLayout
+import kotlinx.coroutines.launch
 
 /**
  * A fragment to indicate that fingerprint enrollment has been completed.
@@ -25,9 +39,71 @@
  * This page will display basic information about what a fingerprint can be used for and acts as the
  * final step of enrollment.
  */
-class FingerprintEnrollConfirmationV2Fragment : Fragment() {
+class FingerprintEnrollConfirmationV2Fragment() :
+  Fragment(R.layout.fingerprint_enroll_finish_base) {
 
-  override fun onCreate(savedInstanceState: Bundle?) {
-    super.onCreate(savedInstanceState)
+  companion object {
+    const val TAG = "FingerprintEnrollConfirmationV2Fragment"
+  }
+
+  /** Used for testing purposes */
+  private var factory: ViewModelProvider.Factory? = null
+
+  @VisibleForTesting
+  constructor(theFactory: ViewModelProvider.Factory) : this() {
+    factory = theFactory
+  }
+
+  private val viewModelProvider: ViewModelProvider by lazy {
+    if (factory != null) {
+      ViewModelProvider(requireActivity(), factory!!)
+    } else {
+      ViewModelProvider(requireActivity())
+    }
+  }
+
+  private val viewModel: FingerprintEnrollConfirmationViewModel by lazy {
+    viewModelProvider[FingerprintEnrollConfirmationViewModel::class.java]
+  }
+
+  override fun onCreateView(
+    inflater: LayoutInflater,
+    container: ViewGroup?,
+    savedInstanceState: Bundle?,
+  ): View? =
+    super.onCreateView(inflater, container, savedInstanceState).also { theView ->
+      val mainView = theView!! as GlifLayout
+
+      mainView.setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title)
+      mainView.setDescriptionText(R.string.security_settings_fingerprint_enroll_finish_v2_message)
+
+      val mixin = mainView.getMixin(FooterBarMixin::class.java)
+      viewLifecycleOwner.lifecycleScope.launch {
+        repeatOnLifecycle(Lifecycle.State.RESUMED) {
+          viewModel.isAddAnotherButtonVisible.collect {
+            mixin.secondaryButton =
+              FooterButton.Builder(requireContext())
+                .setText(R.string.fingerprint_enroll_button_add)
+                .setListener { viewModel.onAddAnotherButtonClicked() }
+                .setButtonType(FooterButton.ButtonType.SKIP)
+                .setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Secondary)
+                .build()
+          }
+        }
+      }
+
+      mixin.setPrimaryButton(
+        FooterButton.Builder(requireContext())
+          .setText(R.string.security_settings_fingerprint_enroll_done)
+          .setListener(this::onNextButtonClick)
+          .setButtonType(FooterButton.ButtonType.NEXT)
+          .setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Primary)
+          .build()
+      )
+    }
+
+  @Suppress("UNUSED_PARAMETER")
+  private fun onNextButtonClick(view: View?) {
+    viewModel.onNextButtonClicked()
   }
 }
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/viewmodel/RFPSViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/viewmodel/RFPSViewModel.kt
index 2408a88..6ee5709 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/viewmodel/RFPSViewModel.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/viewmodel/RFPSViewModel.kt
@@ -47,10 +47,12 @@
   /** Value to indicate if the text view is visible or not */
   val textViewIsVisible: Flow<Boolean> = _textViewIsVisible.asStateFlow()
 
+  private var _shouldAnimateIcon: Flow<Boolean> =
+    fingerprintEnrollViewModel.enrollFlowShouldBeRunning
   /** Indicates if the icon should be animating or not */
-  val shouldAnimateIcon = fingerprintEnrollViewModel.enrollFlowShouldBeRunning
+  val shouldAnimateIcon = _shouldAnimateIcon
 
-  private val enrollFlow: Flow<FingerEnrollState?> = fingerprintEnrollViewModel.enrollFLow
+  private var enrollFlow: Flow<FingerEnrollState?> = fingerprintEnrollViewModel.enrollFLow
 
   /**
    * Enroll progress message with a replay of size 1 allowing for new subscribers to get the most
@@ -59,7 +61,7 @@
   val progress: Flow<FingerEnrollState.EnrollProgress?> =
     enrollFlow
       .filterIsInstance<FingerEnrollState.EnrollProgress>()
-      .shareIn(viewModelScope, SharingStarted.Eagerly, 1)
+      .shareIn(viewModelScope, SharingStarted.Eagerly, 0)
 
   /** Clear help message on enroll progress */
   val clearHelpMessage: Flow<Boolean> = progress.map { it != null }
@@ -122,6 +124,7 @@
 
   /** Indicates the negative button has been clicked */
   fun negativeButtonClicked() {
+    doReset()
     navigationViewModel.update(
       FingerprintAction.NEGATIVE_BUTTON_PRESSED,
       navStep,
@@ -129,11 +132,19 @@
     )
   }
 
-  /** Indicates that enrollment has been finished and we can proceed to the next step. */
+  /** Indicates that an enrollment was completed */
   fun finishedSuccessfully() {
+    doReset()
     navigationViewModel.update(FingerprintAction.NEXT, navStep, "${TAG}#progressFinished")
   }
 
+  private fun doReset() {
+    _textViewIsVisible.update { false }
+    _shouldAnimateIcon = fingerprintEnrollViewModel.enrollFlowShouldBeRunning
+    /** Indicates if the icon should be animating or not */
+    enrollFlow = fingerprintEnrollViewModel.enrollFLow
+  }
+
   class RFPSViewModelFactory(
     private val fingerprintEnrollEnrollingViewModel: FingerprintEnrollEnrollingViewModel,
     private val navigationViewModel: FingerprintNavigationViewModel,
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModel.kt
new file mode 100644
index 0000000..d9b31d7
--- /dev/null
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModel.kt
@@ -0,0 +1,67 @@
+/*
+ * 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 com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.FingerprintManagerInteractor
+import kotlinx.coroutines.flow.Flow
+
+/**
+ * Models the UI state for [FingerprintEnrollConfirmationV2Fragment]
+ */
+class FingerprintEnrollConfirmationViewModel(
+  private val navigationViewModel: FingerprintNavigationViewModel,
+  fingerprintInteractor: FingerprintManagerInteractor,
+) : ViewModel() {
+
+  /**
+   * Indicates if the add another button is possible. This should only be true when the user is able
+   * to enroll more fingerprints.
+   */
+  val isAddAnotherButtonVisible: Flow<Boolean> = fingerprintInteractor.canEnrollFingerprints
+
+  /**
+   * Indicates that the user has clicked the next button and is done with fingerprint enrollment.
+   */
+  fun onNextButtonClicked() {
+    navigationViewModel.update(FingerprintAction.NEXT, navStep, "onNextButtonClicked")
+  }
+
+  /**
+   * Indicates that the user has clicked the add another button and will be sent to the enrollment
+   * screen.
+   */
+  fun onAddAnotherButtonClicked() {
+    navigationViewModel.update(FingerprintAction.ADD_ANOTHER, navStep, "onAddAnotherButtonClicked")
+  }
+
+  class FingerprintEnrollConfirmationViewModelFactory(
+    private val navigationViewModel: FingerprintNavigationViewModel,
+    private val fingerprintInteractor: FingerprintManagerInteractor,
+  ) : ViewModelProvider.Factory {
+    @Suppress("UNCHECKED_CAST")
+    override fun <T : ViewModel> create(modelClass: Class<T>): T {
+      return FingerprintEnrollConfirmationViewModel(navigationViewModel, fingerprintInteractor) as T
+    }
+  }
+
+  companion object {
+    private const val TAG = "FingerprintEnrollConfirmationViewModel"
+    private val navStep = FingerprintNavigationStep.Confirmation::class
+  }
+}
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationStep.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationStep.kt
index 979f953..76b4895 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationStep.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationStep.kt
@@ -37,6 +37,7 @@
   ACTIVITY_CREATED,
   NEGATIVE_BUTTON_PRESSED,
   USER_CLICKED_FINISH,
+  ADD_ANOTHER,
 }
 
 /** State that can be used to help a [FingerprintNavigationStep] determine the next step to take. */
@@ -179,6 +180,7 @@
       return when (action) {
         FingerprintAction.NEXT -> Finish(null)
         FingerprintAction.PREV -> TransitionStep(Education(state.fingerprintSensor!!))
+        FingerprintAction.ADD_ANOTHER -> TransitionStep(Enrollment(state.fingerprintSensor!!))
         else -> null
       }
     }
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationViewModel.kt
index 26c20cf..131f5bb 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationViewModel.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationViewModel.kt
@@ -89,7 +89,7 @@
   fun update(action: FingerprintAction, caller: KClass<*>, debugStr: String) {
     Log.d(TAG, "$caller.update($action) $debugStr")
     val currentStep = _currentStep.value
-    val isUiStep = currentStep is UiStep
+    val isUiStep = currentStep is UiStep && caller is UiStep
     if (currentStep == null) {
       throw NullPointerException("current step is null")
     }
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/settings/fragment/FingerprintSettingsV2Fragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/settings/fragment/FingerprintSettingsV2Fragment.kt
index a5f2021..bd90524 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/settings/fragment/FingerprintSettingsV2Fragment.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/settings/fragment/FingerprintSettingsV2Fragment.kt
@@ -232,6 +232,7 @@
         GatekeeperPasswordProvider(LockPatternUtils(context.applicationContext)),
         pressToAuthInteractor,
         Settings,
+        getIntent()
       )
 
     val token = intent.getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN)
diff --git a/src/com/android/settings/biometrics2/ui/viewmodel/FingerprintEnrollProgressViewModel.java b/src/com/android/settings/biometrics2/ui/viewmodel/FingerprintEnrollProgressViewModel.java
index 9b25ee8..1cfec52 100644
--- a/src/com/android/settings/biometrics2/ui/viewmodel/FingerprintEnrollProgressViewModel.java
+++ b/src/com/android/settings/biometrics2/ui/viewmodel/FingerprintEnrollProgressViewModel.java
@@ -23,6 +23,7 @@
 import static com.android.settings.biometrics2.ui.model.EnrollmentProgress.INITIAL_STEPS;
 
 import android.app.Application;
+import android.content.Intent;
 import android.content.res.Resources;
 import android.hardware.fingerprint.FingerprintManager.EnrollReason;
 import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback;
@@ -212,10 +213,11 @@
                     res.getBoolean(R.bool.enrollment_progress_priority_over_help),
                     res.getBoolean(R.bool.enrollment_prioritize_acquire_messages),
                     res.getInteger(R.integer.enrollment_collect_time));
-            mFingerprintUpdater.enroll(mToken, mCancellationSignal, mUserId, callback, reason);
+            mFingerprintUpdater.enroll(mToken, mCancellationSignal, mUserId, callback, reason,
+                    new Intent());
         } else {
             mFingerprintUpdater.enroll(mToken, mCancellationSignal, mUserId, mEnrollmentCallback,
-                    reason);
+                    reason, new Intent());
         }
         return mCancellationSignal;
     }
diff --git a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
index 23ba4f6..8250f70 100644
--- a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
+++ b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java
@@ -23,7 +23,7 @@
 import androidx.preference.Preference;
 
 import com.android.settings.connecteddevice.DevicePreferenceCallback;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
@@ -72,6 +72,32 @@
         if (isDeviceConnected(cachedDevice) && isDeviceInCachedDevicesList(cachedDevice)) {
             Log.d(TAG, "isFilterMatched() current audio profile : " + currentAudioProfile);
 
+            // If device is LE Audio, it is compatible with HFP and A2DP.
+            // It would show in Available Devices group if the audio sharing flag is disabled or
+            // the device is not in the audio sharing session.
+            if (cachedDevice.isConnectedLeAudioDevice()) {
+                boolean isAudioSharingFilterMatched =
+                        FeatureFactory.getFeatureFactory()
+                                .getAudioSharingFeatureProvider()
+                                .isAudioSharingFilterMatched(cachedDevice, mLocalManager);
+                if (!isAudioSharingFilterMatched) {
+                    Log.d(
+                            TAG,
+                            "isFilterMatched() device : "
+                                    + cachedDevice.getName()
+                                    + ", the LE Audio profile is connected and not in sharing "
+                                    + "if broadcast enabled.");
+                    return true;
+                } else {
+                    Log.d(
+                            TAG,
+                            "Filter out device : "
+                                    + cachedDevice.getName()
+                                    + ", it is in audio sharing.");
+                    return false;
+                }
+            }
+
             // If device is Hearing Aid, it is compatible with HFP and A2DP.
             // It would show in Available Devices group.
             if (cachedDevice.isConnectedAshaHearingAidDevice()) {
@@ -82,20 +108,7 @@
                                 + ", the Hearing Aid profile is connected.");
                 return true;
             }
-            // If device is LE Audio, it is compatible with HFP and A2DP.
-            // It would show in Available Devices group if the audio sharing flag is disabled or
-            // the device is not in the audio sharing session.
-            if (cachedDevice.isConnectedLeAudioDevice()) {
-                if (!AudioSharingUtils.isFeatureEnabled()
-                        || !AudioSharingUtils.hasBroadcastSource(cachedDevice, mLocalManager)) {
-                    Log.d(
-                            TAG,
-                            "isFilterMatched() device : "
-                                    + cachedDevice.getName()
-                                    + ", the LE Audio profile is connected and not in sharing.");
-                    return true;
-                }
-            }
+
             // According to the current audio profile type,
             // this page will show the bluetooth device that have corresponding profile.
             // For example:
@@ -125,13 +138,9 @@
         mMetricsFeatureProvider.logClickedPreference(preference, mMetricsCategory);
         final CachedBluetoothDevice device =
                 ((BluetoothDevicePreference) preference).getBluetoothDevice();
-        if (AudioSharingUtils.isFeatureEnabled()
-                && AudioSharingUtils.isBroadcasting(mLocalBtManager)) {
-            if (DBG) {
-                Log.d(TAG, "onPreferenceClick stop broadcasting.");
-            }
-            AudioSharingUtils.stopBroadcasting(mLocalBtManager);
-        }
+        FeatureFactory.getFeatureFactory()
+                .getAudioSharingFeatureProvider()
+                .handleMediaDeviceOnClick(mLocalManager);
         return device.setActive();
     }
 
diff --git a/src/com/android/settings/bluetooth/BluetoothAutoOnPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothAutoOnPreferenceController.java
new file mode 100644
index 0000000..f6f62e8
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothAutoOnPreferenceController.java
@@ -0,0 +1,144 @@
+/*
+ * 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 com.android.settings.bluetooth;
+
+import android.content.Context;
+import android.database.ContentObserver;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.TwoStatePreference;
+
+import com.android.settings.core.TogglePreferenceController;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.core.lifecycle.events.OnStart;
+import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.flags.Flags;
+import com.android.settingslib.utils.ThreadUtils;
+
+public class BluetoothAutoOnPreferenceController extends TogglePreferenceController
+        implements LifecycleObserver, OnStart, OnStop {
+    private static final String TAG = "BluetoothAutoOnPreferenceController";
+    @VisibleForTesting static final String PREF_KEY = "bluetooth_auto_on_settings_toggle";
+    static final String SETTING_NAME = "bluetooth_automatic_turn_on";
+    static final int UNSET = -1;
+    @VisibleForTesting static final int ENABLED = 1;
+    @VisibleForTesting static final int DISABLED = 0;
+    private final ContentObserver mContentObserver =
+            new ContentObserver(new Handler(/* async= */ true)) {
+                @Override
+                public void onChange(boolean selfChange) {
+                    var unused =
+                            ThreadUtils.postOnBackgroundThread(
+                                    () -> {
+                                        updateValue();
+                                        mContext.getMainExecutor()
+                                                .execute(
+                                                        () -> {
+                                                            if (mPreference != null) {
+                                                                updateState(mPreference);
+                                                            }
+                                                        });
+                                    });
+                }
+            };
+    private int mAutoOnValue = UNSET;
+    @Nullable private TwoStatePreference mPreference;
+
+    public BluetoothAutoOnPreferenceController(
+            @NonNull Context context, @NonNull String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public void onStart() {
+        mContext.getContentResolver()
+                .registerContentObserver(
+                        Settings.Secure.getUriFor(SETTING_NAME),
+                        /* notifyForDescendants= */ false,
+                        mContentObserver);
+    }
+
+    @Override
+    public void onStop() {
+        mContext.getContentResolver().unregisterContentObserver(mContentObserver);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (!Flags.bluetoothQsTileDialogAutoOnToggle()) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        updateValue();
+        return mAutoOnValue != UNSET ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    public void displayPreference(@NonNull PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mPreference = screen.findPreference(getPreferenceKey());
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return PREF_KEY;
+    }
+
+    @Override
+    public boolean isChecked() {
+        return mAutoOnValue == ENABLED;
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        if (getAvailabilityStatus() != AVAILABLE) {
+            Log.w(TAG, "Trying to set toggle value while feature not available.");
+            return false;
+        }
+        var unused =
+                ThreadUtils.postOnBackgroundThread(
+                        () -> {
+                            boolean updated =
+                                    Settings.Secure.putIntForUser(
+                                            mContext.getContentResolver(),
+                                            SETTING_NAME,
+                                            isChecked ? ENABLED : DISABLED,
+                                            UserHandle.myUserId());
+                            if (updated) {
+                                updateValue();
+                            }
+                        });
+        return true;
+    }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return 0;
+    }
+
+    private void updateValue() {
+        mAutoOnValue =
+                Settings.Secure.getIntForUser(
+                        mContext.getContentResolver(), SETTING_NAME, UNSET, UserHandle.myUserId());
+    }
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePairingDetailBase.java b/src/com/android/settings/bluetooth/BluetoothDevicePairingDetailBase.java
index 67c32ed..d71328e 100644
--- a/src/com/android/settings/bluetooth/BluetoothDevicePairingDetailBase.java
+++ b/src/com/android/settings/bluetooth/BluetoothDevicePairingDetailBase.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.bluetooth;
 
-import static android.app.Activity.RESULT_OK;
 import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
 
 import android.bluetooth.BluetoothAdapter;
@@ -94,7 +93,6 @@
     public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
         if (bondState == BluetoothDevice.BOND_BONDED) {
             // If one device is connected(bonded), then close this fragment.
-            setResult(RESULT_OK);
             finish();
             return;
         } else if (bondState == BluetoothDevice.BOND_BONDING) {
@@ -126,7 +124,6 @@
         if (cachedDevice != null && cachedDevice.isConnected()) {
             final BluetoothDevice device = cachedDevice.getDevice();
             if (device != null && mSelectedList.contains(device)) {
-                setResult(RESULT_OK);
                 finish();
             } else {
                 onDeviceDeleted(cachedDevice);
diff --git a/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java
index 6fd5070..ac55758 100644
--- a/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java
+++ b/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java
@@ -15,8 +15,13 @@
  */
 package com.android.settings.bluetooth;
 
+import static com.android.settings.bluetooth.BluetoothAutoOnPreferenceController.SETTING_NAME;
+import static com.android.settings.bluetooth.BluetoothAutoOnPreferenceController.UNSET;
+
 import android.app.settings.SettingsEnums;
 import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
 import android.view.View;
 
 import androidx.annotation.VisibleForTesting;
@@ -29,6 +34,7 @@
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.flags.Flags;
 import com.android.settingslib.widget.FooterPreference;
 
 /**
@@ -36,8 +42,11 @@
  * is delegated to the SwitchWidgetController it uses.
  */
 public class BluetoothSwitchPreferenceController
-        implements LifecycleObserver, OnStart, OnStop,
-        SwitchWidgetController.OnSwitchChangeListener, View.OnClickListener {
+        implements LifecycleObserver,
+                OnStart,
+                OnStop,
+                SwitchWidgetController.OnSwitchChangeListener,
+                View.OnClickListener {
 
     private BluetoothEnabler mBluetoothEnabler;
     private RestrictionUtils mRestrictionUtils;
@@ -46,18 +55,21 @@
     private FooterPreference mFooterPreference;
     private boolean mIsAlwaysDiscoverable;
 
-    @VisibleForTesting
-    AlwaysDiscoverable mAlwaysDiscoverable;
+    @VisibleForTesting AlwaysDiscoverable mAlwaysDiscoverable;
 
-    public BluetoothSwitchPreferenceController(Context context,
+    public BluetoothSwitchPreferenceController(
+            Context context,
             SwitchWidgetController switchController,
             FooterPreference footerPreference) {
         this(context, new RestrictionUtils(), switchController, footerPreference);
     }
 
     @VisibleForTesting
-    public BluetoothSwitchPreferenceController(Context context, RestrictionUtils restrictionUtils,
-            SwitchWidgetController switchController, FooterPreference footerPreference) {
+    public BluetoothSwitchPreferenceController(
+            Context context,
+            RestrictionUtils restrictionUtils,
+            SwitchWidgetController switchController,
+            FooterPreference footerPreference) {
         mRestrictionUtils = restrictionUtils;
         mSwitch = switchController;
         mContext = context;
@@ -66,11 +78,13 @@
         mSwitch.setupView();
         updateText(mSwitch.isChecked());
 
-        mBluetoothEnabler = new BluetoothEnabler(context,
-                switchController,
-                FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(),
-                SettingsEnums.ACTION_SETTINGS_MASTER_SWITCH_BLUETOOTH_TOGGLE,
-                mRestrictionUtils);
+        mBluetoothEnabler =
+                new BluetoothEnabler(
+                        context,
+                        switchController,
+                        FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(),
+                        SettingsEnums.ACTION_SETTINGS_MASTER_SWITCH_BLUETOOTH_TOGGLE,
+                        mRestrictionUtils);
         mBluetoothEnabler.setToggleCallback(this);
         mAlwaysDiscoverable = new AlwaysDiscoverable(context);
     }
@@ -97,8 +111,8 @@
     /**
      * Set whether the device can be discovered. By default the value will be {@code false}.
      *
-     * @param isAlwaysDiscoverable {@code true} if the device can be discovered,
-     *     otherwise {@code false}
+     * @param isAlwaysDiscoverable {@code true} if the device can be discovered, otherwise {@code
+     *     false}
      */
     public void setAlwaysDiscoverable(boolean isAlwaysDiscoverable) {
         mIsAlwaysDiscoverable = isAlwaysDiscoverable;
@@ -119,15 +133,35 @@
                 .launch();
     }
 
-    @VisibleForTesting void updateText(boolean isChecked) {
+    @VisibleForTesting
+    void updateText(boolean isChecked) {
         if (!isChecked && Utils.isBluetoothScanningEnabled(mContext)) {
-            mFooterPreference.setTitle(R.string.bluetooth_scanning_on_info_message);
+            if (isAutoOnFeatureAvailable()) {
+                mFooterPreference.setTitle(
+                        R.string.bluetooth_scanning_on_info_message_auto_on_available);
+            } else {
+                mFooterPreference.setTitle(R.string.bluetooth_scanning_on_info_message);
+            }
             mFooterPreference.setLearnMoreText(mContext.getString(R.string.bluetooth_scan_change));
             mFooterPreference.setLearnMoreAction(v -> onClick(v));
         } else {
-            mFooterPreference.setTitle(R.string.bluetooth_empty_list_bluetooth_off);
+            if (isAutoOnFeatureAvailable()) {
+                mFooterPreference.setTitle(
+                        R.string.bluetooth_empty_list_bluetooth_off_auto_on_available);
+            } else {
+                mFooterPreference.setTitle(R.string.bluetooth_empty_list_bluetooth_off);
+            }
             mFooterPreference.setLearnMoreText("");
             mFooterPreference.setLearnMoreAction(null);
         }
     }
+
+    private boolean isAutoOnFeatureAvailable() {
+        if (!Flags.bluetoothQsTileDialogAutoOnToggle()) {
+            return false;
+        }
+        return Settings.Secure.getIntForUser(
+                        mContext.getContentResolver(), SETTING_NAME, UNSET, UserHandle.myUserId())
+                != UNSET;
+    }
 }
diff --git a/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java
index 012220c..d15696b 100644
--- a/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java
+++ b/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java
@@ -24,9 +24,9 @@
 import androidx.preference.Preference;
 
 import com.android.settings.connecteddevice.DevicePreferenceCallback;
-import com.android.settings.flags.Flags;
 import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.flags.Flags;
 
 /**
  * Controller to maintain connected bluetooth devices
diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.kt b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.kt
index 77a80b8..095bed9 100644
--- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.kt
+++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.kt
@@ -36,9 +36,11 @@
 import com.android.settings.dashboard.RestrictedDashboardFragment
 import com.android.settingslib.bluetooth.BluetoothCallback
 import com.android.settingslib.bluetooth.BluetoothDeviceFilter
+import com.android.settingslib.bluetooth.BluetoothUtils
 import com.android.settingslib.bluetooth.CachedBluetoothDevice
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager
 import com.android.settingslib.bluetooth.LocalBluetoothManager
+import com.android.settingslib.flags.Flags
 import java.util.concurrent.ConcurrentHashMap
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
@@ -217,6 +219,14 @@
             )
             return
         }
+        if (Flags.enableHideExclusivelyManagedBluetoothDevice()) {
+            if (cachedDevice.device.bondState == BluetoothDevice.BOND_BONDED
+                && BluetoothUtils.isExclusivelyManagedBluetoothDevice(
+                    prefContext, cachedDevice.device)) {
+                Log.d(TAG, "Trying to create preference for a exclusively managed device")
+                return
+            }
+        }
         // Only add device preference when it's not found in the map and there's no other state
         // message showing in the list
         val preference = devicePreferenceMap.computeIfAbsent(cachedDevice) {
diff --git a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java
index 1db90fa..ed1be7a 100644
--- a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java
+++ b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java
@@ -25,10 +25,10 @@
 import androidx.preference.Preference;
 
 import com.android.settings.connecteddevice.DevicePreferenceCallback;
-import com.android.settings.flags.Flags;
 import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.flags.Flags;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java b/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
index fc3493c..0535d15 100644
--- a/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
+++ b/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java
@@ -17,18 +17,17 @@
 
 import static com.android.settingslib.Utils.isAudioModeOngoingCall;
 
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
 import android.bluetooth.BluetoothProfile;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.util.Log;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.FragmentManager;
+import androidx.lifecycle.DefaultLifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 import androidx.preference.PreferenceScreen;
@@ -38,138 +37,66 @@
 import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
 import com.android.settings.bluetooth.BluetoothDeviceUpdater;
 import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settingslib.bluetooth.BluetoothCallback;
 import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-import com.android.settingslib.core.lifecycle.events.OnStart;
-import com.android.settingslib.core.lifecycle.events.OnStop;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
+import com.android.settingslib.core.lifecycle.Lifecycle;
 
 /**
  * Controller to maintain the {@link androidx.preference.PreferenceGroup} for all available media
  * devices. It uses {@link DevicePreferenceCallback} to add/remove {@link Preference}
  */
 public class AvailableMediaDeviceGroupController extends BasePreferenceController
-        implements LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback, BluetoothCallback {
+        implements DefaultLifecycleObserver, DevicePreferenceCallback, BluetoothCallback {
     private static final boolean DEBUG = BluetoothUtils.D;
 
     private static final String TAG = "AvailableMediaDeviceGroupController";
     private static final String KEY = "available_device_list";
 
-    @VisibleForTesting PreferenceGroup mPreferenceGroup;
+    @VisibleForTesting @Nullable PreferenceGroup mPreferenceGroup;
     @VisibleForTesting LocalBluetoothManager mLocalBluetoothManager;
-    private final Executor mExecutor;
-    private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
-    private FragmentManager mFragmentManager;
-    private BluetoothLeBroadcastAssistant.Callback mAssistantCallback =
-            new BluetoothLeBroadcastAssistant.Callback() {
-                @Override
-                public void onSearchStarted(int reason) {}
+    @Nullable private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
+    @Nullable private FragmentManager mFragmentManager;
 
-                @Override
-                public void onSearchStartFailed(int reason) {}
-
-                @Override
-                public void onSearchStopped(int reason) {}
-
-                @Override
-                public void onSearchStopFailed(int reason) {}
-
-                @Override
-                public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {}
-
-                @Override
-                public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    mBluetoothDeviceUpdater.forceUpdate();
-                }
-
-                @Override
-                public void onSourceAddFailed(
-                        @NonNull BluetoothDevice sink,
-                        @NonNull BluetoothLeBroadcastMetadata source,
-                        int reason) {}
-
-                @Override
-                public void onSourceModified(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceModifyFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceRemoved(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    mBluetoothDeviceUpdater.forceUpdate();
-                }
-
-                @Override
-                public void onSourceRemoveFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onReceiveStateChanged(
-                        BluetoothDevice sink,
-                        int sourceId,
-                        BluetoothLeBroadcastReceiveState state) {}
-            };
-
-    public AvailableMediaDeviceGroupController(Context context) {
+    public AvailableMediaDeviceGroupController(
+            Context context,
+            @Nullable DashboardFragment fragment,
+            @Nullable Lifecycle lifecycle) {
         super(context, KEY);
+        if (fragment != null) {
+            init(fragment);
+        }
+        if (lifecycle != null) {
+            lifecycle.addObserver(this);
+        }
         mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
-        mExecutor = Executors.newSingleThreadExecutor();
     }
 
     @Override
-    public void onStart() {
+    public void onStart(@NonNull LifecycleOwner owner) {
         if (mLocalBluetoothManager == null) {
             Log.e(TAG, "onStart() Bluetooth is not supported on this device");
             return;
         }
-        if (AudioSharingUtils.isFeatureEnabled()) {
-            LocalBluetoothLeBroadcastAssistant assistant =
-                    mLocalBluetoothManager
-                            .getProfileManager()
-                            .getLeAudioBroadcastAssistantProfile();
-            if (assistant != null) {
-                if (DEBUG) {
-                    Log.d(TAG, "onStart() Register callbacks for assistant.");
-                }
-                assistant.registerServiceCallBack(mExecutor, mAssistantCallback);
-            }
-        }
-        mBluetoothDeviceUpdater.registerCallback();
         mLocalBluetoothManager.getEventManager().registerCallback(this);
-        mBluetoothDeviceUpdater.refreshPreference();
+        if (mBluetoothDeviceUpdater != null) {
+            mBluetoothDeviceUpdater.registerCallback();
+            mBluetoothDeviceUpdater.refreshPreference();
+        }
     }
 
     @Override
-    public void onStop() {
+    public void onStop(@NonNull LifecycleOwner owner) {
         if (mLocalBluetoothManager == null) {
             Log.e(TAG, "onStop() Bluetooth is not supported on this device");
             return;
         }
-        if (AudioSharingUtils.isFeatureEnabled()) {
-            LocalBluetoothLeBroadcastAssistant assistant =
-                    mLocalBluetoothManager
-                            .getProfileManager()
-                            .getLeAudioBroadcastAssistantProfile();
-            if (assistant != null) {
-                if (DEBUG) {
-                    Log.d(TAG, "onStop() Register callbacks for assistant.");
-                }
-                assistant.unregisterServiceCallBack(mAssistantCallback);
-            }
+        if (mBluetoothDeviceUpdater != null) {
+            mBluetoothDeviceUpdater.unregisterCallback();
         }
-        mBluetoothDeviceUpdater.unregisterCallback();
         mLocalBluetoothManager.getEventManager().unregisterCallback(this);
     }
 
@@ -178,12 +105,16 @@
         super.displayPreference(screen);
 
         mPreferenceGroup = screen.findPreference(KEY);
-        mPreferenceGroup.setVisible(false);
+        if (mPreferenceGroup != null) {
+            mPreferenceGroup.setVisible(false);
+        }
 
         if (isAvailable()) {
             updateTitle();
-            mBluetoothDeviceUpdater.setPrefContext(screen.getContext());
-            mBluetoothDeviceUpdater.forceUpdate();
+            if (mBluetoothDeviceUpdater != null) {
+                mBluetoothDeviceUpdater.setPrefContext(screen.getContext());
+                mBluetoothDeviceUpdater.forceUpdate();
+            }
         }
     }
 
@@ -201,17 +132,21 @@
 
     @Override
     public void onDeviceAdded(Preference preference) {
-        if (mPreferenceGroup.getPreferenceCount() == 0) {
-            mPreferenceGroup.setVisible(true);
+        if (mPreferenceGroup != null) {
+            if (mPreferenceGroup.getPreferenceCount() == 0) {
+                mPreferenceGroup.setVisible(true);
+            }
+            mPreferenceGroup.addPreference(preference);
         }
-        mPreferenceGroup.addPreference(preference);
     }
 
     @Override
     public void onDeviceRemoved(Preference preference) {
-        mPreferenceGroup.removePreference(preference);
-        if (mPreferenceGroup.getPreferenceCount() == 0) {
-            mPreferenceGroup.setVisible(false);
+        if (mPreferenceGroup != null) {
+            mPreferenceGroup.removePreference(preference);
+            if (mPreferenceGroup.getPreferenceCount() == 0) {
+                mPreferenceGroup.setVisible(false);
+            }
         }
     }
 
@@ -253,14 +188,16 @@
     }
 
     private void updateTitle() {
-        if (isAudioModeOngoingCall(mContext)) {
-            // in phone call
-            mPreferenceGroup.setTitle(
-                    mContext.getString(R.string.connected_device_call_device_title));
-        } else {
-            // without phone call
-            mPreferenceGroup.setTitle(
-                    mContext.getString(R.string.connected_device_media_device_title));
+        if (mPreferenceGroup != null) {
+            if (isAudioModeOngoingCall(mContext)) {
+                // in phone call
+                mPreferenceGroup.setTitle(
+                        mContext.getString(R.string.connected_device_call_device_title));
+            } else {
+                // without phone call
+                mPreferenceGroup.setTitle(
+                        mContext.getString(R.string.connected_device_media_device_title));
+            }
         }
     }
 }
diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
index 27001d6..04ba5d2 100644
--- a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
@@ -22,13 +22,12 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingDevicePreferenceController;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
 import com.android.settings.core.SettingsUIDeviceConfig;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
@@ -36,8 +35,13 @@
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.slices.SlicePreferenceController;
 import com.android.settingslib.bluetooth.HearingAidStatsLogUtils;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.search.SearchIndexable;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
 public class ConnectedDeviceDashboardFragment extends DashboardFragment {
 
@@ -87,10 +91,6 @@
                             + ", action : "
                             + action);
         }
-        if (AudioSharingUtils.isFeatureEnabled()) {
-            use(AudioSharingDevicePreferenceController.class).init(this);
-        }
-        use(AvailableMediaDeviceGroupController.class).init(this);
         use(ConnectedDeviceGroupController.class).init(this);
         use(PreviouslyConnectedDevicePreferenceController.class).init(this);
         use(SlicePreferenceController.class)
@@ -112,6 +112,31 @@
         }
     }
 
+    @Override
+    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
+        return buildPreferenceControllers(context, /* fragment= */ this, getSettingsLifecycle());
+    }
+
+    private static List<AbstractPreferenceController> buildPreferenceControllers(
+            Context context,
+            @Nullable ConnectedDeviceDashboardFragment fragment,
+            @Nullable Lifecycle lifecycle) {
+        final List<AbstractPreferenceController> controllers = new ArrayList<>();
+        AbstractPreferenceController availableMediaController =
+                FeatureFactory.getFeatureFactory()
+                        .getAudioSharingFeatureProvider()
+                        .createAvailableMediaDeviceGroupController(context, fragment, lifecycle);
+        controllers.add(availableMediaController);
+        AbstractPreferenceController audioSharingController =
+                FeatureFactory.getFeatureFactory()
+                        .getAudioSharingFeatureProvider()
+                        .createAudioSharingDevicePreferenceController(context, fragment, lifecycle);
+        if (audioSharingController != null) {
+            controllers.add(audioSharingController);
+        }
+        return controllers;
+    }
+
     @VisibleForTesting
     boolean isAlwaysDiscoverable(String callingAppPackageName, String action) {
         return TextUtils.equals(SLICE_ACTION, action)
@@ -122,5 +147,12 @@
 
     /** For Search. */
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider(R.xml.connected_devices);
+            new BaseSearchIndexProvider(R.xml.connected_devices) {
+                @Override
+                public List<AbstractPreferenceController> createPreferenceControllers(
+                        Context context) {
+                    return buildPreferenceControllers(
+                            context, /* fragment= */ null, /* lifecycle= */ null);
+                }
+            };
 }
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java
deleted file mode 100644
index 8497c9d..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java
+++ /dev/null
@@ -1,89 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-public abstract class AudioSharingBasePreferenceController extends BasePreferenceController
-        implements DefaultLifecycleObserver {
-    private final BluetoothAdapter mBluetoothAdapter;
-    private final LocalBluetoothManager mBtManager;
-    protected final LocalBluetoothLeBroadcast mBroadcast;
-    protected Preference mPreference;
-
-    public AudioSharingBasePreferenceController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
-        mBtManager = Utils.getLocalBtManager(context);
-        mBroadcast =
-                mBtManager == null
-                        ? null
-                        : mBtManager.getProfileManager().getLeAudioBroadcastProfile();
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference = screen.findPreference(getPreferenceKey());
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (isAvailable()) {
-            updateVisibility();
-        }
-    }
-
-    /** Update the visibility of the preference. */
-    protected void updateVisibility() {
-        if (mPreference != null) {
-            var unused =
-                    ThreadUtils.postOnBackgroundThread(
-                            () -> {
-                                boolean isVisible = isBroadcasting() && isBluetoothStateOn();
-                                ThreadUtils.postOnMainThread(
-                                        () -> mPreference.setVisible(isVisible));
-                            });
-        }
-    }
-
-    protected boolean isBroadcasting() {
-        return mBroadcast != null && mBroadcast.isEnabled(null);
-    }
-
-    protected boolean isBluetoothStateOn() {
-        return mBluetoothAdapter != null && mBluetoothAdapter.isEnabled();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdater.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdater.java
deleted file mode 100644
index 59393ad..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingBluetoothDeviceUpdater.java
+++ /dev/null
@@ -1,91 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.content.Context;
-import android.util.Log;
-
-import androidx.preference.Preference;
-
-import com.android.settings.bluetooth.BluetoothDevicePreference;
-import com.android.settings.bluetooth.BluetoothDeviceUpdater;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.DevicePreferenceCallback;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-public class AudioSharingBluetoothDeviceUpdater extends BluetoothDeviceUpdater
-        implements Preference.OnPreferenceClickListener {
-
-    private static final String TAG = "AudioSharingBluetoothDeviceUpdater";
-
-    private static final String PREF_KEY = "audio_sharing_bt";
-
-    private LocalBluetoothManager mLocalBluetoothManager;
-
-    public AudioSharingBluetoothDeviceUpdater(
-            Context context,
-            DevicePreferenceCallback devicePreferenceCallback,
-            int metricsCategory) {
-        super(context, devicePreferenceCallback, metricsCategory);
-        mLocalBluetoothManager = Utils.getLocalBluetoothManager(context);
-    }
-
-    @Override
-    public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
-        boolean isFilterMatched = false;
-        if (isDeviceConnected(cachedDevice) && isDeviceInCachedDevicesList(cachedDevice)) {
-            // If device is LE audio device and has a broadcast source,
-            // it would show in audio sharing devices group.
-            if (cachedDevice.isConnectedLeAudioDevice()
-                    && AudioSharingUtils.hasBroadcastSource(cachedDevice, mLocalBluetoothManager)) {
-                isFilterMatched = true;
-            }
-        }
-        Log.d(
-                TAG,
-                "isFilterMatched() device : "
-                        + cachedDevice.getName()
-                        + ", isFilterMatched : "
-                        + isFilterMatched);
-        return isFilterMatched;
-    }
-
-    @Override
-    public boolean onPreferenceClick(Preference preference) {
-        mMetricsFeatureProvider.logClickedPreference(preference, mMetricsCategory);
-        final CachedBluetoothDevice device =
-                ((BluetoothDevicePreference) preference).getBluetoothDevice();
-        return device.setActive();
-    }
-
-    @Override
-    protected String getPreferenceKey() {
-        return PREF_KEY;
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    protected void update(CachedBluetoothDevice cachedBluetoothDevice) {
-        super.update(cachedBluetoothDevice);
-        Log.d(TAG, "Map : " + mPreferenceMap);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceController.java
deleted file mode 100644
index c39257d..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCompatibilityPreferenceController.java
+++ /dev/null
@@ -1,177 +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 com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothLeBroadcast;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.PreferenceScreen;
-import androidx.preference.TwoStatePreference;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.TogglePreferenceController;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class AudioSharingCompatibilityPreferenceController extends TogglePreferenceController
-        implements DefaultLifecycleObserver {
-
-    private static final String TAG = "AudioSharingCompatibilityPrefController";
-
-    private static final String PREF_KEY = "audio_sharing_stream_compatibility";
-    private static final String SHARING_OFF_SUMMARY =
-            "Helps some devices like hearing aids connect by reducing audio quality";
-    private static final String SHARING_ON_SUMMARY =
-            "Turns off the audio sharing to config the compatibility";
-
-    private final LocalBluetoothManager mBtManager;
-    private final Executor mExecutor;
-    private final LocalBluetoothLeBroadcast mBroadcast;
-    @Nullable private TwoStatePreference mPreference;
-
-    private final BluetoothLeBroadcast.Callback mBroadcastCallback =
-            new BluetoothLeBroadcast.Callback() {
-                @Override
-                public void onBroadcastStarted(int reason, int broadcastId) {
-                    Log.d(
-                            TAG,
-                            "onBroadcastStarted(), reason = "
-                                    + reason
-                                    + ", broadcastId = "
-                                    + broadcastId);
-                    updateEnabled();
-                }
-
-                @Override
-                public void onBroadcastStartFailed(int reason) {}
-
-                @Override
-                public void onBroadcastMetadataChanged(
-                        int broadcastId, @NonNull BluetoothLeBroadcastMetadata metadata) {}
-
-                @Override
-                public void onBroadcastStopped(int reason, int broadcastId) {
-                    Log.d(
-                            TAG,
-                            "onBroadcastStopped(), reason = "
-                                    + reason
-                                    + ", broadcastId = "
-                                    + broadcastId);
-                    updateEnabled();
-                }
-
-                @Override
-                public void onBroadcastStopFailed(int reason) {}
-
-                @Override
-                public void onBroadcastUpdated(int reason, int broadcastId) {}
-
-                @Override
-                public void onBroadcastUpdateFailed(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStarted(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStopped(int reason, int broadcastId) {}
-            };
-
-    public AudioSharingCompatibilityPreferenceController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mBtManager = Utils.getLocalBtManager(context);
-        mBroadcast = mBtManager.getProfileManager().getLeAudioBroadcastProfile();
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mBroadcast != null) {
-            mBroadcast.registerServiceCallBack(mExecutor, mBroadcastCallback);
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mBroadcast != null) {
-            mBroadcast.unregisterServiceCallBack(mBroadcastCallback);
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference = screen.findPreference(getPreferenceKey());
-        updateEnabled();
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return PREF_KEY;
-    }
-
-    @Override
-    public boolean isChecked() {
-        return mBroadcast != null && mBroadcast.getImproveCompatibility();
-    }
-
-    @Override
-    public boolean setChecked(boolean isChecked) {
-        if (mBroadcast == null || mBroadcast.getImproveCompatibility() == isChecked) {
-            Log.d(
-                    TAG,
-                    "Skip setting improveCompatibility, unchanged = "
-                            + (mBroadcast.getImproveCompatibility() == isChecked));
-            return false;
-        }
-        mBroadcast.setImproveCompatibility(isChecked);
-        // TODO: call updateBroadcast once framework change ready.
-        return true;
-    }
-
-    @Override
-    public int getSliceHighlightMenuRes() {
-        return 0;
-    }
-
-    private void updateEnabled() {
-        mContext.getMainExecutor()
-                .execute(
-                        () -> {
-                            if (mPreference != null) {
-                                boolean isBroadcasting =
-                                        AudioSharingUtils.isBroadcasting(mBtManager);
-                                mPreference.setEnabled(!isBroadcasting);
-                                mPreference.setSummary(
-                                        isBroadcasting ? SHARING_ON_SUMMARY : SHARING_OFF_SUMMARY);
-                            }
-                        });
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java
deleted file mode 100644
index 7a7f337..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java
+++ /dev/null
@@ -1,107 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.os.Bundle;
-
-import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsCategoryController;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.widget.SettingsMainSwitchBar;
-
-public class AudioSharingDashboardFragment extends DashboardFragment
-        implements AudioSharingSwitchBarController.OnSwitchBarChangedListener {
-    private static final String TAG = "AudioSharingDashboardFrag";
-
-    SettingsMainSwitchBar mMainSwitchBar;
-    private AudioSharingSwitchBarController mSwitchBarController;
-    private AudioSharingDeviceVolumeGroupController mAudioSharingDeviceVolumeGroupController;
-    private CallsAndAlarmsPreferenceController mCallsAndAlarmsPreferenceController;
-    private AudioSharingPlaySoundPreferenceController mAudioSharingPlaySoundPreferenceController;
-    private AudioStreamsCategoryController mAudioStreamsCategoryController;
-
-    public AudioSharingDashboardFragment() {
-        super();
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.AUDIO_SHARING_SETTINGS;
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    public int getHelpResource() {
-        return R.string.help_url_audio_sharing;
-    }
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.bluetooth_audio_sharing;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        mAudioSharingDeviceVolumeGroupController =
-                use(AudioSharingDeviceVolumeGroupController.class);
-        mAudioSharingDeviceVolumeGroupController.init(this);
-        mCallsAndAlarmsPreferenceController = use(CallsAndAlarmsPreferenceController.class);
-        mCallsAndAlarmsPreferenceController.init(this);
-        mAudioSharingPlaySoundPreferenceController =
-                use(AudioSharingPlaySoundPreferenceController.class);
-        mAudioStreamsCategoryController = use(AudioStreamsCategoryController.class);
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        // Assume we are in a SettingsActivity. This is only safe because we currently use
-        // SettingsActivity as base for all preference fragments.
-        final SettingsActivity activity = (SettingsActivity) getActivity();
-        mMainSwitchBar = activity.getSwitchBar();
-        mMainSwitchBar.setTitle(getText(R.string.audio_sharing_switch_title));
-        mSwitchBarController = new AudioSharingSwitchBarController(activity, mMainSwitchBar, this);
-        mSwitchBarController.init(this);
-        getSettingsLifecycle().addObserver(mSwitchBarController);
-        mMainSwitchBar.show();
-    }
-
-    @Override
-    public void onSwitchBarChanged() {
-        updateVisibilityForAttachedPreferences();
-    }
-
-    private void updateVisibilityForAttachedPreferences() {
-        mAudioSharingDeviceVolumeGroupController.updateVisibility();
-        mCallsAndAlarmsPreferenceController.updateVisibility();
-        mAudioSharingPlaySoundPreferenceController.updateVisibility();
-        mAudioStreamsCategoryController.updateVisibility();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
deleted file mode 100644
index a5f5adb..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceAdapter.java
+++ /dev/null
@@ -1,86 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.settings.R;
-
-import java.util.ArrayList;
-
-public class AudioSharingDeviceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
-
-    private static final String TAG = "AudioSharingDeviceAdapter";
-    private final ArrayList<AudioSharingDeviceItem> mDevices;
-    private final OnClickListener mOnClickListener;
-    private final String mPrefix;
-
-    public AudioSharingDeviceAdapter(
-            ArrayList<AudioSharingDeviceItem> devices, OnClickListener listener, String prefix) {
-        mDevices = devices;
-        mOnClickListener = listener;
-        mPrefix = prefix;
-    }
-
-    private class AudioSharingDeviceViewHolder extends RecyclerView.ViewHolder {
-        private final Button mButtonView;
-
-        AudioSharingDeviceViewHolder(View view) {
-            super(view);
-            mButtonView = view.findViewById(R.id.device_button);
-        }
-
-        public void bindView(int position) {
-            if (mButtonView != null) {
-                mButtonView.setText(mPrefix + mDevices.get(position).getName());
-                mButtonView.setOnClickListener(
-                        v -> mOnClickListener.onClick(mDevices.get(position)));
-            } else {
-                Log.w(TAG, "bind view skipped due to button view is null");
-            }
-        }
-    }
-
-    @Override
-    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        View view =
-                LayoutInflater.from(parent.getContext())
-                        .inflate(R.layout.audio_sharing_device_item, parent, false);
-        return new AudioSharingDeviceViewHolder(view);
-    }
-
-    @Override
-    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
-        ((AudioSharingDeviceViewHolder) holder).bindView(position);
-    }
-
-    @Override
-    public int getItemCount() {
-        return mDevices.size();
-    }
-
-    public interface OnClickListener {
-        /** Called when an item has been clicked. */
-        void onClick(AudioSharingDeviceItem item);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceItem.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceItem.java
deleted file mode 100644
index 5998e30..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceItem.java
+++ /dev/null
@@ -1,75 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public final class AudioSharingDeviceItem implements Parcelable {
-    private final String mName;
-    private final int mGroupId;
-    private final boolean mIsActive;
-
-    public AudioSharingDeviceItem(String name, int groupId, boolean isActive) {
-        mName = name;
-        mGroupId = groupId;
-        mIsActive = isActive;
-    }
-
-    public String getName() {
-        return mName;
-    }
-
-    public int getGroupId() {
-        return mGroupId;
-    }
-
-    public boolean isActive() {
-        return mIsActive;
-    }
-
-    public AudioSharingDeviceItem(Parcel in) {
-        mName = in.readString();
-        mGroupId = in.readInt();
-        mIsActive = in.readBoolean();
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(mName);
-        dest.writeInt(mGroupId);
-        dest.writeBoolean(mIsActive);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    public static final Creator<AudioSharingDeviceItem> CREATOR =
-            new Creator<AudioSharingDeviceItem>() {
-                @Override
-                public AudioSharingDeviceItem createFromParcel(Parcel in) {
-                    return new AudioSharingDeviceItem(in);
-                }
-
-                @Override
-                public AudioSharingDeviceItem[] newArray(int size) {
-                    return new AudioSharingDeviceItem[size];
-                }
-            };
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java
deleted file mode 100644
index ef0f226..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java
+++ /dev/null
@@ -1,677 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothCsipSetCoordinator;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcast;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.bluetooth.BluetoothDeviceUpdater;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.DevicePreferenceCallback;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LeAudioProfile;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-import com.google.common.collect.ImmutableList;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class AudioSharingDevicePreferenceController extends BasePreferenceController
-        implements DefaultLifecycleObserver, DevicePreferenceCallback, BluetoothCallback {
-    private static final boolean DEBUG = BluetoothUtils.D;
-
-    private static final String TAG = "AudioSharingDevicePrefController";
-    private static final String KEY = "audio_sharing_device_list";
-    private static final String KEY_AUDIO_SHARING_SETTINGS =
-            "connected_device_audio_sharing_settings";
-
-    private final LocalBluetoothManager mLocalBtManager;
-    private final Executor mExecutor;
-    private CachedBluetoothDeviceManager mDeviceManager;
-    private LocalBluetoothLeBroadcast mBroadcast;
-    private LocalBluetoothLeBroadcastAssistant mAssistant;
-    private PreferenceGroup mPreferenceGroup;
-    private Preference mAudioSharingSettingsPreference;
-    private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
-    private DashboardFragment mFragment;
-    private List<BluetoothDevice> mTargetSinks = new ArrayList<>();
-
-    private final BluetoothLeBroadcast.Callback mBroadcastCallback =
-            new BluetoothLeBroadcast.Callback() {
-                @Override
-                public void onBroadcastStarted(int reason, int broadcastId) {
-                    Log.d(
-                            TAG,
-                            "onBroadcastStarted(), reason = "
-                                    + reason
-                                    + ", broadcastId = "
-                                    + broadcastId);
-                }
-
-                @Override
-                public void onBroadcastStartFailed(int reason) {
-                    Log.d(TAG, "onBroadcastStartFailed(), reason = " + reason);
-                    // TODO: handle broadcast start fail
-                }
-
-                @Override
-                public void onBroadcastMetadataChanged(
-                        int broadcastId, @NonNull BluetoothLeBroadcastMetadata metadata) {
-                    Log.d(
-                            TAG,
-                            "onBroadcastMetadataChanged(), broadcastId = "
-                                    + broadcastId
-                                    + ", metadata = "
-                                    + metadata);
-                    addSourceToTargetDevices(mTargetSinks);
-                    mTargetSinks = new ArrayList<>();
-                }
-
-                @Override
-                public void onBroadcastStopped(int reason, int broadcastId) {
-                    Log.d(
-                            TAG,
-                            "onBroadcastStopped(), reason = "
-                                    + reason
-                                    + ", broadcastId = "
-                                    + broadcastId);
-                }
-
-                @Override
-                public void onBroadcastStopFailed(int reason) {
-                    Log.d(TAG, "onBroadcastStopFailed(), reason = " + reason);
-                    // TODO: handle broadcast stop fail
-                }
-
-                @Override
-                public void onBroadcastUpdated(int reason, int broadcastId) {}
-
-                @Override
-                public void onBroadcastUpdateFailed(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStarted(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStopped(int reason, int broadcastId) {}
-            };
-
-    private BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
-            new BluetoothLeBroadcastAssistant.Callback() {
-                @Override
-                public void onSearchStarted(int reason) {}
-
-                @Override
-                public void onSearchStartFailed(int reason) {}
-
-                @Override
-                public void onSearchStopped(int reason) {}
-
-                @Override
-                public void onSearchStopFailed(int reason) {}
-
-                @Override
-                public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {}
-
-                @Override
-                public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceAdded(), sink = "
-                                    + sink
-                                    + ", sourceId = "
-                                    + sourceId
-                                    + ", reason = "
-                                    + reason);
-                    mBluetoothDeviceUpdater.forceUpdate();
-                    if (mDeviceManager != null) {
-                        CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(sink);
-                        if (cachedDevice != null) {
-                            closeOpeningDialogsForLeaDevice(cachedDevice);
-                        }
-                    }
-                }
-
-                @Override
-                public void onSourceAddFailed(
-                        @NonNull BluetoothDevice sink,
-                        @NonNull BluetoothLeBroadcastMetadata source,
-                        int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceAddFailed(), sink = "
-                                    + sink
-                                    + ", source = "
-                                    + source
-                                    + ", reason = "
-                                    + reason);
-                    AudioSharingUtils.toastMessage(
-                            mContext,
-                            String.format(
-                                    Locale.US,
-                                    "Fail to add source to %s reason %d",
-                                    sink.getAddress(),
-                                    reason));
-                }
-
-                @Override
-                public void onSourceModified(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceModifyFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceRemoved(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceRemoved(), sink = "
-                                    + sink
-                                    + ", sourceId = "
-                                    + sourceId
-                                    + ", reason = "
-                                    + reason);
-                    mBluetoothDeviceUpdater.forceUpdate();
-                }
-
-                @Override
-                public void onSourceRemoveFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceRemoveFailed(), sink = "
-                                    + sink
-                                    + ", sourceId = "
-                                    + sourceId
-                                    + ", reason = "
-                                    + reason);
-                    AudioSharingUtils.toastMessage(
-                            mContext,
-                            String.format(
-                                    Locale.US,
-                                    "Fail to remove source from %s reason %d",
-                                    sink.getAddress(),
-                                    reason));
-                }
-
-                @Override
-                public void onReceiveStateChanged(
-                        BluetoothDevice sink,
-                        int sourceId,
-                        BluetoothLeBroadcastReceiveState state) {}
-            };
-
-    public AudioSharingDevicePreferenceController(Context context) {
-        super(context, KEY);
-        mLocalBtManager = Utils.getLocalBtManager(mContext);
-        if (mLocalBtManager != null) {
-            mDeviceManager = mLocalBtManager.getCachedDeviceManager();
-            mBroadcast = mLocalBtManager.getProfileManager().getLeAudioBroadcastProfile();
-            mAssistant = mLocalBtManager.getProfileManager().getLeAudioBroadcastAssistantProfile();
-        }
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mLocalBtManager == null) {
-            Log.d(TAG, "onStart() Bluetooth is not supported on this device");
-            return;
-        }
-        if (mBroadcast == null || mAssistant == null) {
-            Log.d(TAG, "onStart() Broadcast or assistant is not supported on this device");
-            return;
-        }
-        if (mBluetoothDeviceUpdater == null) {
-            Log.d(TAG, "onStart() Bluetooth device updater is not initialized");
-            return;
-        }
-        mLocalBtManager.getEventManager().registerCallback(this);
-        if (DEBUG) {
-            Log.d(TAG, "onStart() Register callbacks for broadcast and assistant.");
-        }
-        mBroadcast.registerServiceCallBack(mExecutor, mBroadcastCallback);
-        mAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
-        mBluetoothDeviceUpdater.registerCallback();
-        mBluetoothDeviceUpdater.refreshPreference();
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mLocalBtManager == null) {
-            Log.d(TAG, "onStop() Bluetooth is not supported on this device");
-            return;
-        }
-        if (mBroadcast == null || mAssistant == null) {
-            Log.d(TAG, "onStop() Broadcast or assistant is not supported on this device");
-            return;
-        }
-        if (mBluetoothDeviceUpdater == null) {
-            Log.d(TAG, "onStop() Bluetooth device updater is not initialized");
-            return;
-        }
-        mLocalBtManager.getEventManager().unregisterCallback(this);
-        if (DEBUG) {
-            Log.d(TAG, "onStop() Unregister callbacks for broadcast and assistant.");
-        }
-        mBroadcast.unregisterServiceCallBack(mBroadcastCallback);
-        mAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
-        mBluetoothDeviceUpdater.unregisterCallback();
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-
-        mPreferenceGroup = screen.findPreference(KEY);
-        mAudioSharingSettingsPreference =
-                mPreferenceGroup.findPreference(KEY_AUDIO_SHARING_SETTINGS);
-        mPreferenceGroup.setVisible(false);
-        mAudioSharingSettingsPreference.setVisible(false);
-
-        if (isAvailable()) {
-            mBluetoothDeviceUpdater.setPrefContext(screen.getContext());
-            mBluetoothDeviceUpdater.forceUpdate();
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AudioSharingUtils.isFeatureEnabled() && mBluetoothDeviceUpdater != null
-                ? AVAILABLE_UNSEARCHABLE
-                : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return KEY;
-    }
-
-    @Override
-    public void onDeviceAdded(Preference preference) {
-        if (mPreferenceGroup.getPreferenceCount() == 1) {
-            mPreferenceGroup.setVisible(true);
-            mAudioSharingSettingsPreference.setVisible(true);
-        }
-        mPreferenceGroup.addPreference(preference);
-    }
-
-    @Override
-    public void onDeviceRemoved(Preference preference) {
-        mPreferenceGroup.removePreference(preference);
-        if (mPreferenceGroup.getPreferenceCount() == 1) {
-            mPreferenceGroup.setVisible(false);
-            mAudioSharingSettingsPreference.setVisible(false);
-        }
-    }
-
-    @Override
-    public void onProfileConnectionStateChanged(
-            @NonNull CachedBluetoothDevice cachedDevice,
-            @ConnectionState int state,
-            int bluetoothProfile) {
-        if (state == BluetoothAdapter.STATE_DISCONNECTED) {
-            boolean isLeAudio = isLeAudioSupported(cachedDevice);
-            if (isLeAudio && bluetoothProfile == BluetoothProfile.LE_AUDIO) {
-                closeOpeningDialogsForLeaDevice(cachedDevice);
-                return;
-            }
-            if (!isLeAudio && !cachedDevice.isConnected()) {
-                closeOpeningDialogsForNonLeaDevice(cachedDevice);
-                return;
-            }
-        }
-        if (state != BluetoothAdapter.STATE_CONNECTED || !cachedDevice.getDevice().isConnected()) {
-            Log.d(TAG, "Ignore onProfileConnectionStateChanged, not connected state");
-            return;
-        }
-        if (mFragment == null) {
-            Log.d(TAG, "Ignore onProfileConnectionStateChanged, no host fragment");
-            return;
-        }
-        if (mAssistant == null && mBroadcast == null) {
-            Log.d(
-                    TAG,
-                    "Ignore onProfileConnectionStateChanged, no broadcast or assistant supported");
-            return;
-        }
-        var unused =
-                ThreadUtils.postOnBackgroundThread(
-                        () -> handleOnProfileStateChanged(cachedDevice, bluetoothProfile));
-    }
-
-    /**
-     * Initialize the controller.
-     *
-     * @param fragment The fragment to provide the context and metrics category for {@link
-     *     AudioSharingBluetoothDeviceUpdater} and provide the host for dialogs.
-     */
-    public void init(DashboardFragment fragment) {
-        mFragment = fragment;
-        mBluetoothDeviceUpdater =
-                new AudioSharingBluetoothDeviceUpdater(
-                        fragment.getContext(),
-                        AudioSharingDevicePreferenceController.this,
-                        fragment.getMetricsCategory());
-    }
-
-    private void handleOnProfileStateChanged(
-            @NonNull CachedBluetoothDevice cachedDevice, int bluetoothProfile) {
-        boolean isLeAudioSupported = isLeAudioSupported(cachedDevice);
-        // For eligible (LE audio) remote device, we only check its connected LE audio profile.
-        if (isLeAudioSupported && bluetoothProfile != BluetoothProfile.LE_AUDIO) {
-            Log.d(
-                    TAG,
-                    "Ignore onProfileConnectionStateChanged, not the le profile for le audio"
-                            + " device");
-            return;
-        }
-        boolean isFirstConnectedProfile = isFirstConnectedProfile(cachedDevice, bluetoothProfile);
-        // For ineligible (non LE audio) remote device, we only check its first connected profile.
-        if (!isLeAudioSupported && !isFirstConnectedProfile) {
-            Log.d(
-                    TAG,
-                    "Ignore onProfileConnectionStateChanged, not the first connected profile for"
-                            + " non le audio device");
-            return;
-        }
-        if (DEBUG) {
-            Log.d(
-                    TAG,
-                    "Start handling onProfileConnectionStateChanged for "
-                            + cachedDevice.getDevice().getAnonymizedAddress());
-        }
-        if (!isLeAudioSupported) {
-            // Handle connected ineligible (non LE audio) remote device
-            handleOnProfileStateChangedForNonLeAudioDevice(cachedDevice);
-        } else {
-            // Handle connected eligible (LE audio) remote device
-            handleOnProfileStateChangedForLeAudioDevice(cachedDevice);
-        }
-    }
-
-    private void handleOnProfileStateChangedForNonLeAudioDevice(
-            @NonNull CachedBluetoothDevice cachedDevice) {
-        if (isBroadcasting()) {
-            // Show stop audio sharing dialog when an ineligible (non LE audio) remote device
-            // connected during a sharing session.
-            postOnMainThread(
-                    () -> {
-                        closeOpeningDialogsOtherThan(AudioSharingStopDialogFragment.tag());
-                        AudioSharingStopDialogFragment.show(
-                                mFragment,
-                                cachedDevice,
-                                () -> mBroadcast.stopBroadcast(mBroadcast.getLatestBroadcastId()));
-                    });
-        } else {
-            // Do nothing for ineligible (non LE audio) remote device when no sharing session.
-            if (DEBUG) {
-                Log.d(
-                        TAG,
-                        "Ignore onProfileConnectionStateChanged for non LE audio without"
-                                + " sharing session");
-            }
-        }
-    }
-
-    private void handleOnProfileStateChangedForLeAudioDevice(
-            @NonNull CachedBluetoothDevice cachedDevice) {
-        Map<Integer, List<CachedBluetoothDevice>> groupedDevices =
-                AudioSharingUtils.fetchConnectedDevicesByGroupId(mLocalBtManager);
-        if (isBroadcasting()) {
-            int groupId = AudioSharingUtils.getGroupId(cachedDevice);
-            if (groupedDevices.containsKey(groupId)
-                    && groupedDevices.get(groupId).stream()
-                            .anyMatch(
-                                    device ->
-                                            AudioSharingUtils.hasBroadcastSource(
-                                                    device, mLocalBtManager))) {
-                Log.d(
-                        TAG,
-                        "Automatically add another device within the same group to the sharing: "
-                                + cachedDevice.getDevice().getAnonymizedAddress());
-                addSourceToTargetDevices(ImmutableList.of(cachedDevice.getDevice()));
-                return;
-            }
-            // Show audio sharing switch or join dialog according to device count in the sharing
-            // session.
-            ArrayList<AudioSharingDeviceItem> deviceItemsInSharingSession =
-                    AudioSharingUtils.buildOrderedConnectedLeadAudioSharingDeviceItem(
-                            mLocalBtManager, groupedDevices, /* filterByInSharing= */ true);
-            // Show audio sharing switch dialog when the third eligible (LE audio) remote device
-            // connected during a sharing session.
-            if (deviceItemsInSharingSession.size() >= 2) {
-                postOnMainThread(
-                        () -> {
-                            closeOpeningDialogsOtherThan(
-                                    AudioSharingDisconnectDialogFragment.tag());
-                            AudioSharingDisconnectDialogFragment.show(
-                                    mFragment,
-                                    deviceItemsInSharingSession,
-                                    cachedDevice,
-                                    (AudioSharingDeviceItem item) -> {
-                                        // Remove all sources from the device user clicked
-                                        if (groupedDevices.containsKey(item.getGroupId())) {
-                                            for (CachedBluetoothDevice device :
-                                                    groupedDevices.get(item.getGroupId())) {
-                                                for (BluetoothLeBroadcastReceiveState source :
-                                                        mAssistant.getAllSources(
-                                                                device.getDevice())) {
-                                                    mAssistant.removeSource(
-                                                            device.getDevice(),
-                                                            source.getSourceId());
-                                                }
-                                            }
-                                        }
-                                        // Add current broadcast to the latest connected device
-                                        mAssistant.addSource(
-                                                cachedDevice.getDevice(),
-                                                mBroadcast.getLatestBluetoothLeBroadcastMetadata(),
-                                                /* isGroupOp= */ true);
-                                    });
-                        });
-            } else {
-                // Show audio sharing join dialog when the first or second eligible (LE audio)
-                // remote device connected during a sharing session.
-                postOnMainThread(
-                        () -> {
-                            closeOpeningDialogsOtherThan(AudioSharingJoinDialogFragment.tag());
-                            AudioSharingJoinDialogFragment.show(
-                                    mFragment,
-                                    deviceItemsInSharingSession,
-                                    cachedDevice,
-                                    () -> {
-                                        // Add current broadcast to the latest connected device
-                                        mAssistant.addSource(
-                                                cachedDevice.getDevice(),
-                                                mBroadcast.getLatestBluetoothLeBroadcastMetadata(),
-                                                /* isGroupOp= */ true);
-                                    });
-                        });
-            }
-        } else {
-            ArrayList<AudioSharingDeviceItem> deviceItems = new ArrayList<>();
-            for (List<CachedBluetoothDevice> devices : groupedDevices.values()) {
-                // Use random device in the group within the sharing session to represent the group.
-                CachedBluetoothDevice device = devices.get(0);
-                if (AudioSharingUtils.getGroupId(device)
-                        == AudioSharingUtils.getGroupId(cachedDevice)) {
-                    continue;
-                }
-                deviceItems.add(AudioSharingUtils.buildAudioSharingDeviceItem(device));
-            }
-            // Show audio sharing join dialog when the second eligible (LE audio) remote
-            // device connect and no sharing session.
-            if (deviceItems.size() == 1) {
-                postOnMainThread(
-                        () -> {
-                            closeOpeningDialogsOtherThan(AudioSharingJoinDialogFragment.tag());
-                            AudioSharingJoinDialogFragment.show(
-                                    mFragment,
-                                    deviceItems,
-                                    cachedDevice,
-                                    () -> {
-                                        mTargetSinks = new ArrayList<>();
-                                        for (List<CachedBluetoothDevice> devices :
-                                                groupedDevices.values()) {
-                                            for (CachedBluetoothDevice device : devices) {
-                                                mTargetSinks.add(device.getDevice());
-                                            }
-                                        }
-                                        mBroadcast.startPrivateBroadcast();
-                                    });
-                        });
-            }
-        }
-    }
-
-    private boolean isLeAudioSupported(CachedBluetoothDevice cachedDevice) {
-        return cachedDevice.getProfiles().stream()
-                .anyMatch(
-                        profile ->
-                                profile instanceof LeAudioProfile
-                                        && profile.isEnabled(cachedDevice.getDevice()));
-    }
-
-    private boolean isFirstConnectedProfile(
-            CachedBluetoothDevice cachedDevice, int bluetoothProfile) {
-        return cachedDevice.getProfiles().stream()
-                .noneMatch(
-                        profile ->
-                                profile.getProfileId() != bluetoothProfile
-                                        && profile.getConnectionStatus(cachedDevice.getDevice())
-                                                == BluetoothProfile.STATE_CONNECTED);
-    }
-
-    private boolean isBroadcasting() {
-        return mBroadcast != null && mBroadcast.isEnabled(null);
-    }
-
-    private void addSourceToTargetDevices(List<BluetoothDevice> sinks) {
-        if (sinks.isEmpty() || mBroadcast == null || mAssistant == null) {
-            Log.d(TAG, "Skip adding source to target.");
-            return;
-        }
-        BluetoothLeBroadcastMetadata broadcastMetadata =
-                mBroadcast.getLatestBluetoothLeBroadcastMetadata();
-        if (broadcastMetadata == null) {
-            Log.e(TAG, "Error: There is no broadcastMetadata.");
-            return;
-        }
-        for (BluetoothDevice sink : sinks) {
-            Log.d(
-                    TAG,
-                    "Add broadcast with broadcastId: "
-                            + broadcastMetadata.getBroadcastId()
-                            + "to the device: "
-                            + sink.getAnonymizedAddress());
-            mAssistant.addSource(sink, broadcastMetadata, /* isGroupOp= */ false);
-        }
-    }
-
-    private void closeOpeningDialogsOtherThan(String tag) {
-        if (mFragment == null) return;
-        List<Fragment> fragments = mFragment.getChildFragmentManager().getFragments();
-        for (Fragment fragment : fragments) {
-            if (fragment instanceof DialogFragment && !fragment.getTag().equals(tag)) {
-                Log.d(TAG, "Remove staled opening dialog " + fragment.getTag());
-                ((DialogFragment) fragment).dismiss();
-            }
-        }
-    }
-
-    private void closeOpeningDialogsForLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) {
-        if (mFragment == null) return;
-        int groupId = AudioSharingUtils.getGroupId(cachedDevice);
-        List<Fragment> fragments = mFragment.getChildFragmentManager().getFragments();
-        for (Fragment fragment : fragments) {
-            CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment);
-            if (device != null
-                    && groupId != BluetoothCsipSetCoordinator.GROUP_ID_INVALID
-                    && AudioSharingUtils.getGroupId(device) == groupId) {
-                Log.d(TAG, "Remove staled opening dialog for group " + groupId);
-                ((DialogFragment) fragment).dismiss();
-            }
-        }
-    }
-
-    private void closeOpeningDialogsForNonLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) {
-        if (mFragment == null) return;
-        String address = cachedDevice.getAddress();
-        List<Fragment> fragments = mFragment.getChildFragmentManager().getFragments();
-        for (Fragment fragment : fragments) {
-            CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment);
-            if (device != null && address != null && address.equals(device.getAddress())) {
-                Log.d(
-                        TAG,
-                        "Remove staled opening dialog for device "
-                                + cachedDevice.getDevice().getAnonymizedAddress());
-                ((DialogFragment) fragment).dismiss();
-            }
-        }
-    }
-
-    @Nullable
-    private CachedBluetoothDevice getCachedBluetoothDeviceFromDialog(Fragment fragment) {
-        CachedBluetoothDevice device = null;
-        if (fragment instanceof AudioSharingJoinDialogFragment) {
-            device = ((AudioSharingJoinDialogFragment) fragment).getDevice();
-        } else if (fragment instanceof AudioSharingStopDialogFragment) {
-            device = ((AudioSharingStopDialogFragment) fragment).getDevice();
-        } else if (fragment instanceof AudioSharingDisconnectDialogFragment) {
-            device = ((AudioSharingDisconnectDialogFragment) fragment).getDevice();
-        }
-        return device;
-    }
-
-    private void postOnMainThread(@NonNull Runnable runnable) {
-        mContext.getMainExecutor().execute(runnable);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeControlUpdater.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeControlUpdater.java
deleted file mode 100644
index 5c0a90a..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeControlUpdater.java
+++ /dev/null
@@ -1,142 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothDevice;
-import android.content.Context;
-import android.util.Log;
-import android.widget.SeekBar;
-
-import androidx.preference.Preference;
-
-import com.android.settings.bluetooth.BluetoothDevicePreference;
-import com.android.settings.bluetooth.BluetoothDeviceUpdater;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.DevicePreferenceCallback;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-public class AudioSharingDeviceVolumeControlUpdater extends BluetoothDeviceUpdater
-        implements Preference.OnPreferenceClickListener {
-
-    private static final String TAG = "AudioSharingDeviceVolumeControlUpdater";
-
-    private static final String PREF_KEY = "audio_sharing_volume_control";
-
-    private final LocalBluetoothManager mLocalBtManager;
-
-    public AudioSharingDeviceVolumeControlUpdater(
-            Context context,
-            DevicePreferenceCallback devicePreferenceCallback,
-            int metricsCategory) {
-        super(context, devicePreferenceCallback, metricsCategory);
-        mLocalBtManager = Utils.getLocalBluetoothManager(context);
-    }
-
-    @Override
-    public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
-        boolean isFilterMatched = false;
-        if (isDeviceConnected(cachedDevice) && isDeviceInCachedDevicesList(cachedDevice)) {
-            // If device is LE audio device and in a sharing session on current sharing device,
-            // it would show in volume control group.
-            if (cachedDevice.isConnectedLeAudioDevice()
-                    && AudioSharingUtils.isBroadcasting(mLocalBtManager)
-                    && AudioSharingUtils.hasBroadcastSource(cachedDevice, mLocalBtManager)) {
-                isFilterMatched = true;
-            }
-        }
-        Log.d(
-                TAG,
-                "isFilterMatched() device : "
-                        + cachedDevice.getName()
-                        + ", isFilterMatched : "
-                        + isFilterMatched);
-        return isFilterMatched;
-    }
-
-    @Override
-    public boolean onPreferenceClick(Preference preference) {
-        return true;
-    }
-
-    @Override
-    protected void addPreference(CachedBluetoothDevice cachedDevice) {
-        if (cachedDevice == null) return;
-        final BluetoothDevice device = cachedDevice.getDevice();
-        if (!mPreferenceMap.containsKey(device)) {
-            SeekBar.OnSeekBarChangeListener listener =
-                    new SeekBar.OnSeekBarChangeListener() {
-                        @Override
-                        public void onProgressChanged(
-                                SeekBar seekBar, int progress, boolean fromUser) {}
-
-                        @Override
-                        public void onStartTrackingTouch(SeekBar seekBar) {}
-
-                        @Override
-                        public void onStopTrackingTouch(SeekBar seekBar) {
-                            if (mLocalBtManager != null
-                                    && mLocalBtManager.getProfileManager().getVolumeControlProfile()
-                                            != null) {
-                                mLocalBtManager
-                                        .getProfileManager()
-                                        .getVolumeControlProfile()
-                                        .setDeviceVolume(
-                                                cachedDevice.getDevice(),
-                                                seekBar.getProgress(),
-                                                /* isGroupOp= */ true);
-                            }
-                        }
-                    };
-            AudioSharingDeviceVolumePreference vPreference =
-                    new AudioSharingDeviceVolumePreference(mPrefContext, cachedDevice);
-            vPreference.initialize();
-            vPreference.setOnSeekBarChangeListener(listener);
-            vPreference.setKey(getPreferenceKey());
-            vPreference.setIcon(com.android.settingslib.R.drawable.ic_bt_untethered_earbuds);
-            vPreference.setTitle(cachedDevice.getName());
-            mPreferenceMap.put(device, vPreference);
-            mDevicePreferenceCallback.onDeviceAdded(vPreference);
-        }
-    }
-
-    @Override
-    protected String getPreferenceKey() {
-        return PREF_KEY;
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    protected void update(CachedBluetoothDevice cachedBluetoothDevice) {
-        super.update(cachedBluetoothDevice);
-        Log.d(TAG, "Map : " + mPreferenceMap);
-    }
-
-    @Override
-    protected void addPreference(
-            CachedBluetoothDevice cachedDevice, @BluetoothDevicePreference.SortType int type) {}
-
-    @Override
-    protected void launchDeviceDetails(Preference preference) {}
-
-    @Override
-    public void refreshPreference() {}
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java
deleted file mode 100644
index edd1caf..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java
+++ /dev/null
@@ -1,345 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.annotation.IntRange;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.bluetooth.BluetoothVolumeControl;
-import android.content.Context;
-import android.media.AudioManager;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.FragmentManager;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.bluetooth.BluetoothDeviceUpdater;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.DevicePreferenceCallback;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.VolumeControlProfile;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePreferenceController
-        implements DevicePreferenceCallback {
-    private static final String TAG = "AudioSharingDeviceVolumeGroupController";
-    private static final String KEY = "audio_sharing_device_volume_group";
-
-    private final LocalBluetoothManager mLocalBtManager;
-    private final LocalBluetoothLeBroadcastAssistant mAssistant;
-    private final Executor mExecutor;
-    private VolumeControlProfile mVolumeControl;
-    private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
-    private FragmentManager mFragmentManager;
-    private PreferenceGroup mPreferenceGroup;
-    private List<AudioSharingDeviceVolumePreference> mVolumePreferences = new ArrayList<>();
-    private Map<Integer, Integer> mValueMap = new HashMap<Integer, Integer>();
-
-    private BluetoothVolumeControl.Callback mVolumeControlCallback =
-            new BluetoothVolumeControl.Callback() {
-                @Override
-                public void onVolumeOffsetChanged(
-                        @NonNull BluetoothDevice device, int volumeOffset) {}
-
-                @Override
-                public void onDeviceVolumeChanged(
-                        @NonNull BluetoothDevice device,
-                        @IntRange(from = -255, to = 255) int volume) {
-                    CachedBluetoothDevice cachedDevice =
-                            mLocalBtManager.getCachedDeviceManager().findDevice(device);
-                    if (cachedDevice == null) return;
-                    int groupId = AudioSharingUtils.getGroupId(cachedDevice);
-                    mValueMap.put(groupId, volume);
-                    for (AudioSharingDeviceVolumePreference preference : mVolumePreferences) {
-                        if (preference.getCachedDevice() != null
-                                && AudioSharingUtils.getGroupId(preference.getCachedDevice())
-                                        == groupId) {
-                            // If the callback return invalid volume, try to
-                            // get the volume from AudioManager.STREAM_MUSIC
-                            int finalVolume = getAudioVolumeIfNeeded(volume);
-                            Log.d(
-                                    TAG,
-                                    "onDeviceVolumeChanged: set volume to "
-                                            + finalVolume
-                                            + " for "
-                                            + device.getAnonymizedAddress());
-                            mContext.getMainExecutor()
-                                    .execute(() -> preference.setProgress(finalVolume));
-                            break;
-                        }
-                    }
-                }
-            };
-
-    private BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
-            new BluetoothLeBroadcastAssistant.Callback() {
-                @Override
-                public void onSearchStarted(int reason) {}
-
-                @Override
-                public void onSearchStartFailed(int reason) {}
-
-                @Override
-                public void onSearchStopped(int reason) {}
-
-                @Override
-                public void onSearchStopFailed(int reason) {}
-
-                @Override
-                public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {}
-
-                @Override
-                public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceAdded(), sink = "
-                                    + sink
-                                    + ", sourceId = "
-                                    + sourceId
-                                    + ", reason = "
-                                    + reason);
-                    mBluetoothDeviceUpdater.forceUpdate();
-                }
-
-                @Override
-                public void onSourceAddFailed(
-                        @NonNull BluetoothDevice sink,
-                        @NonNull BluetoothLeBroadcastMetadata source,
-                        int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceAddFailed(), sink = "
-                                    + sink
-                                    + ", source = "
-                                    + source
-                                    + ", reason = "
-                                    + reason);
-                }
-
-                @Override
-                public void onSourceModified(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceModifyFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceRemoved(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceRemoved(), sink = "
-                                    + sink
-                                    + ", sourceId = "
-                                    + sourceId
-                                    + ", reason = "
-                                    + reason);
-                    mBluetoothDeviceUpdater.forceUpdate();
-                }
-
-                @Override
-                public void onSourceRemoveFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceRemoveFailed(), sink = "
-                                    + sink
-                                    + ", sourceId = "
-                                    + sourceId
-                                    + ", reason = "
-                                    + reason);
-                }
-
-                @Override
-                public void onReceiveStateChanged(
-                        BluetoothDevice sink,
-                        int sourceId,
-                        BluetoothLeBroadcastReceiveState state) {}
-            };
-
-    public AudioSharingDeviceVolumeGroupController(Context context) {
-        super(context, KEY);
-        mLocalBtManager = Utils.getLocalBtManager(mContext);
-        mAssistant = mLocalBtManager.getProfileManager().getLeAudioBroadcastAssistantProfile();
-        mExecutor = Executors.newSingleThreadExecutor();
-        if (mLocalBtManager != null) {
-            mVolumeControl = mLocalBtManager.getProfileManager().getVolumeControlProfile();
-        }
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        super.onStart(owner);
-        if (mAssistant == null) {
-            Log.d(TAG, "onStart() Broadcast or assistant is not supported on this device");
-            return;
-        }
-        if (mBluetoothDeviceUpdater == null) {
-            Log.d(TAG, "onStart() Bluetooth device updater is not initialized");
-            return;
-        }
-        mAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
-        mBluetoothDeviceUpdater.registerCallback();
-        if (mVolumeControl != null) {
-            Log.d(TAG, "onStart() Registered volume control callback");
-            mVolumeControl.registerCallback(mExecutor, mVolumeControlCallback);
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        super.onStop(owner);
-        if (mAssistant == null) {
-            Log.d(TAG, "onStop() Broadcast or assistant is not supported on this device");
-            return;
-        }
-        if (mBluetoothDeviceUpdater == null) {
-            Log.d(TAG, "onStop() Bluetooth device updater is not initialized");
-            return;
-        }
-        mAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
-        mBluetoothDeviceUpdater.unregisterCallback();
-        if (mVolumeControl != null) {
-            Log.d(TAG, "onStop() Unregistered volume control callback");
-            mVolumeControl.unregisterCallback(mVolumeControlCallback);
-            mValueMap.clear();
-        }
-    }
-
-    @Override
-    public void onDestroy(@NonNull LifecycleOwner owner) {
-        mVolumePreferences.clear();
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-
-        mPreferenceGroup = screen.findPreference(KEY);
-        mPreferenceGroup.setVisible(false);
-
-        if (isAvailable() && mBluetoothDeviceUpdater != null) {
-            mBluetoothDeviceUpdater.setPrefContext(screen.getContext());
-            mBluetoothDeviceUpdater.forceUpdate();
-        }
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return KEY;
-    }
-
-    @Override
-    public void onDeviceAdded(Preference preference) {
-        if (mPreferenceGroup.getPreferenceCount() == 0) {
-            mPreferenceGroup.setVisible(true);
-        }
-        mPreferenceGroup.addPreference(preference);
-        if (preference instanceof AudioSharingDeviceVolumePreference) {
-            var volumePref = (AudioSharingDeviceVolumePreference) preference;
-            mVolumePreferences.add(volumePref);
-            if (volumePref.getProgress() > 0) return;
-            CachedBluetoothDevice device = volumePref.getCachedDevice();
-            if (device == null) return;
-            int volume = mValueMap.getOrDefault(AudioSharingUtils.getGroupId(device), -1);
-            // If the volume is invalid, try to get the volume from AudioManager.STREAM_MUSIC
-            int finalVolume = getAudioVolumeIfNeeded(volume);
-            Log.d(
-                    TAG,
-                    "onDeviceAdded: set volume to "
-                            + finalVolume
-                            + " for "
-                            + device.getDevice().getAnonymizedAddress());
-            mContext.getMainExecutor().execute(() -> volumePref.setProgress(finalVolume));
-        }
-    }
-
-    @Override
-    public void onDeviceRemoved(Preference preference) {
-        mPreferenceGroup.removePreference(preference);
-        if (mPreferenceGroup.getPreferenceCount() == 0) {
-            mPreferenceGroup.setVisible(false);
-        }
-        if (preference instanceof AudioSharingDeviceVolumePreference) {
-            var volumePref = (AudioSharingDeviceVolumePreference) preference;
-            if (mVolumePreferences.contains(volumePref)) {
-                mVolumePreferences.remove(volumePref);
-            }
-            CachedBluetoothDevice device = volumePref.getCachedDevice();
-            Log.d(
-                    TAG,
-                    "onDeviceRemoved: "
-                            + (device == null
-                                    ? "null"
-                                    : device.getDevice().getAnonymizedAddress()));
-        }
-    }
-
-    @Override
-    public void updateVisibility() {
-        if (mPreferenceGroup != null) {
-            mPreferenceGroup.setVisible(false);
-            if (mPreferenceGroup.getPreferenceCount() > 0) {
-                super.updateVisibility();
-            }
-        }
-    }
-
-    /**
-     * Initialize the controller.
-     *
-     * @param fragment The fragment to provide the context and metrics category for {@link
-     *     AudioSharingBluetoothDeviceUpdater} and provide the host for dialogs.
-     */
-    public void init(DashboardFragment fragment) {
-        mBluetoothDeviceUpdater =
-                new AudioSharingDeviceVolumeControlUpdater(
-                        fragment.getContext(),
-                        AudioSharingDeviceVolumeGroupController.this,
-                        fragment.getMetricsCategory());
-    }
-
-    private int getAudioVolumeIfNeeded(int volume) {
-        if (volume >= 0) return volume;
-        try {
-            AudioManager audioManager = mContext.getSystemService(AudioManager.class);
-            int max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
-            int min = audioManager.getStreamMinVolume(AudioManager.STREAM_MUSIC);
-            return Math.round(
-                    audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) * 255f / (max - min));
-        } catch (RuntimeException e) {
-            Log.e(TAG, "Fail to fetch current music stream volume, error = " + e);
-            return volume;
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumePreference.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumePreference.java
deleted file mode 100644
index 9dd9fb0..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumePreference.java
+++ /dev/null
@@ -1,56 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.content.Context;
-import android.widget.SeekBar;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.settings.R;
-import com.android.settings.widget.SeekBarPreference;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-
-public class AudioSharingDeviceVolumePreference extends SeekBarPreference {
-    public static final int MIN_VOLUME = 0;
-    public static final int MAX_VOLUME = 255;
-
-    protected SeekBar mSeekBar;
-    private final CachedBluetoothDevice mCachedDevice;
-
-    public AudioSharingDeviceVolumePreference(
-            Context context, @NonNull CachedBluetoothDevice device) {
-        super(context);
-        setLayoutResource(R.layout.preference_volume_slider);
-        mCachedDevice = device;
-    }
-
-    @Nullable
-    public CachedBluetoothDevice getCachedDevice() {
-        return mCachedDevice;
-    }
-
-    /**
-     * Initialize {@link AudioSharingDeviceVolumePreference}.
-     * Need to be called after creating the preference.
-     */
-    public void initialize() {
-        setMax(MAX_VOLUME);
-        setMin(MIN_VOLUME);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
deleted file mode 100644
index 32cd2f8..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
+++ /dev/null
@@ -1,154 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.app.Dialog;
-import android.app.settings.SettingsEnums;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-
-import com.google.common.collect.Iterables;
-
-import java.util.ArrayList;
-import java.util.stream.Collectors;
-
-public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
-    private static final String TAG = "AudioSharingDialog";
-
-    private static final String BUNDLE_KEY_DEVICE_ITEMS = "bundle_key_device_items";
-
-    // The host creates an instance of this dialog fragment must implement this interface to receive
-    // event callbacks.
-    public interface DialogEventListener {
-        /**
-         * Called when users click the device item for sharing in the dialog.
-         *
-         * @param item The device item clicked.
-         */
-        void onItemClick(AudioSharingDeviceItem item);
-    }
-
-    private static DialogEventListener sListener;
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.DIALOG_START_AUDIO_SHARING;
-    }
-
-    /**
-     * Display the {@link AudioSharingDialogFragment} dialog.
-     *
-     * @param host The Fragment this dialog will be hosted.
-     * @param deviceItems The connected device items eligible for audio sharing.
-     * @param listener The callback to handle the user action on this dialog.
-     */
-    public static void show(
-            Fragment host,
-            ArrayList<AudioSharingDeviceItem> deviceItems,
-            DialogEventListener listener) {
-        if (!AudioSharingUtils.isFeatureEnabled()) return;
-        final FragmentManager manager = host.getChildFragmentManager();
-        sListener = listener;
-        if (manager.findFragmentByTag(TAG) == null) {
-            final Bundle bundle = new Bundle();
-            bundle.putParcelableArrayList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
-            AudioSharingDialogFragment dialog = new AudioSharingDialogFragment();
-            dialog.setArguments(bundle);
-            dialog.show(manager, TAG);
-        }
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        Bundle arguments = requireArguments();
-        ArrayList<AudioSharingDeviceItem> deviceItems =
-                arguments.getParcelableArrayList(BUNDLE_KEY_DEVICE_ITEMS);
-        final AlertDialog.Builder builder =
-                new AlertDialog.Builder(getActivity()).setCancelable(false);
-        LayoutInflater inflater = LayoutInflater.from(builder.getContext());
-        View customTitle = inflater.inflate(R.layout.dialog_custom_title_audio_sharing, null);
-        ImageView icon = customTitle.findViewById(R.id.title_icon);
-        icon.setImageResource(R.drawable.ic_bt_audio_sharing);
-        TextView title = customTitle.findViewById(R.id.title_text);
-        View rootView = inflater.inflate(R.layout.dialog_audio_sharing, /* parent= */ null);
-        TextView subTitle1 = rootView.findViewById(R.id.share_audio_subtitle1);
-        TextView subTitle2 = rootView.findViewById(R.id.share_audio_subtitle2);
-        RecyclerView recyclerView = rootView.findViewById(R.id.btn_list);
-        Button shareBtn = rootView.findViewById(R.id.share_btn);
-        Button cancelBtn = rootView.findViewById(R.id.cancel_btn);
-        if (deviceItems.isEmpty()) {
-            title.setText("Share your audio");
-            subTitle2.setText(
-                    "To start sharing audio, "
-                            + "connect two pairs of headphones that support LE Audio");
-            ImageView image = rootView.findViewById(R.id.share_audio_guidance);
-            image.setVisibility(View.VISIBLE);
-            builder.setNegativeButton("Close", null);
-        } else if (deviceItems.size() == 1) {
-            title.setText("Share your audio");
-            subTitle1.setText(
-                    deviceItems.stream()
-                            .map(AudioSharingDeviceItem::getName)
-                            .collect(Collectors.joining(" and ")));
-            subTitle2.setText(
-                    "This device's music and videos will play on both pairs of headphones");
-            shareBtn.setText("Share audio");
-            shareBtn.setOnClickListener(
-                    v -> {
-                        sListener.onItemClick(Iterables.getOnlyElement(deviceItems));
-                        dismiss();
-                    });
-            cancelBtn.setOnClickListener(v -> dismiss());
-            subTitle1.setVisibility(View.VISIBLE);
-            shareBtn.setVisibility(View.VISIBLE);
-            cancelBtn.setVisibility(View.VISIBLE);
-        } else {
-            title.setText("Share audio with another device");
-            subTitle2.setText(
-                    "This device's music and videos will play on the headphones you connect");
-            recyclerView.setAdapter(
-                    new AudioSharingDeviceAdapter(
-                            deviceItems,
-                            (AudioSharingDeviceItem item) -> {
-                                sListener.onItemClick(item);
-                                dismiss();
-                            },
-                            "Connect "));
-            recyclerView.setLayoutManager(
-                    new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
-            recyclerView.setVisibility(View.VISIBLE);
-            cancelBtn.setOnClickListener(v -> dismiss());
-            cancelBtn.setVisibility(View.VISIBLE);
-        }
-        AlertDialog dialog = builder.setCustomTitle(customTitle).setView(rootView).create();
-        dialog.setCanceledOnTouchOutside(false);
-        return dialog;
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java
deleted file mode 100644
index 74c73aa..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java
+++ /dev/null
@@ -1,173 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.app.Dialog;
-import android.app.settings.SettingsEnums;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-
-import java.util.ArrayList;
-import java.util.Locale;
-
-public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFragment {
-    private static final String TAG = "AudioSharingDisconnectDialog";
-
-    private static final String BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS =
-            "bundle_key_device_to_disconnect_items";
-    private static final String BUNDLE_KEY_NEW_DEVICE_NAME = "bundle_key_new_device_name";
-
-    // The host creates an instance of this dialog fragment must implement this interface to receive
-    // event callbacks.
-    public interface DialogEventListener {
-        /**
-         * Called when users click the device item to disconnect from the audio sharing in the
-         * dialog.
-         *
-         * @param item The device item clicked.
-         */
-        void onItemClick(AudioSharingDeviceItem item);
-    }
-
-    private static DialogEventListener sListener;
-    @Nullable private static CachedBluetoothDevice sNewDevice;
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.DIALOG_AUDIO_SHARING_SWITCH_DEVICE;
-    }
-
-    /**
-     * Display the {@link AudioSharingDisconnectDialogFragment} dialog.
-     *
-     * <p>If the dialog is showing for the same group, update the dialog event listener.
-     *
-     * @param host The Fragment this dialog will be hosted.
-     * @param deviceItems The existing connected device items in audio sharing session.
-     * @param newDevice The latest connected device triggered this dialog.
-     * @param listener The callback to handle the user action on this dialog.
-     */
-    public static void show(
-            Fragment host,
-            ArrayList<AudioSharingDeviceItem> deviceItems,
-            CachedBluetoothDevice newDevice,
-            DialogEventListener listener) {
-        if (!AudioSharingUtils.isFeatureEnabled()) return;
-        final FragmentManager manager = host.getChildFragmentManager();
-        Fragment dialog = manager.findFragmentByTag(TAG);
-        if (dialog != null
-                && ((DialogFragment) dialog).getDialog() != null
-                && ((DialogFragment) dialog).getDialog().isShowing()) {
-            int newGroupId = AudioSharingUtils.getGroupId(newDevice);
-            if (sNewDevice != null && newGroupId == AudioSharingUtils.getGroupId(sNewDevice)) {
-                Log.d(
-                        TAG,
-                        String.format(
-                                Locale.US,
-                                "Dialog is showing for the same device group %d, "
-                                        + "update the content.",
-                                newGroupId));
-                sListener = listener;
-                sNewDevice = newDevice;
-                return;
-            } else {
-                Log.d(
-                        TAG,
-                        String.format(
-                                Locale.US,
-                                "Dialog is showing for new device group %d, "
-                                        + "dismiss current dialog.",
-                                newGroupId));
-                ((DialogFragment) dialog).dismiss();
-            }
-        }
-        sListener = listener;
-        sNewDevice = newDevice;
-        Log.d(TAG, "Show up the dialog.");
-        final Bundle bundle = new Bundle();
-        bundle.putParcelableArrayList(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS, deviceItems);
-        bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
-        AudioSharingDisconnectDialogFragment dialogFrag =
-                new AudioSharingDisconnectDialogFragment();
-        dialogFrag.setArguments(bundle);
-        dialogFrag.show(manager, TAG);
-    }
-
-    /** Return the tag of {@link AudioSharingDisconnectDialogFragment} dialog. */
-    public static @NonNull String tag() {
-        return TAG;
-    }
-
-    /** Get the latest connected device which triggers the dialog. */
-    public @Nullable CachedBluetoothDevice getDevice() {
-        return sNewDevice;
-    }
-
-    @Override
-    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
-        Bundle arguments = requireArguments();
-        ArrayList<AudioSharingDeviceItem> deviceItems =
-                arguments.getParcelableArrayList(BUNDLE_KEY_DEVICE_TO_DISCONNECT_ITEMS);
-        final AlertDialog.Builder builder =
-                new AlertDialog.Builder(getActivity()).setCancelable(false);
-        LayoutInflater inflater = LayoutInflater.from(builder.getContext());
-        // Set custom title for the dialog.
-        View customTitle = inflater.inflate(R.layout.dialog_custom_title_audio_sharing, null);
-        ImageView icon = customTitle.findViewById(R.id.title_icon);
-        icon.setImageResource(R.drawable.ic_bt_audio_sharing);
-        TextView title = customTitle.findViewById(R.id.title_text);
-        title.setText("Choose a device to disconnect");
-        View rootView =
-                inflater.inflate(R.layout.dialog_audio_sharing_disconnect, /* parent= */ null);
-        TextView subTitle = rootView.findViewById(R.id.share_audio_disconnect_description);
-        subTitle.setText("Only 2 devices can share audio at a time");
-        RecyclerView recyclerView = rootView.findViewById(R.id.device_btn_list);
-        recyclerView.setAdapter(
-                new AudioSharingDeviceAdapter(
-                        deviceItems,
-                        (AudioSharingDeviceItem item) -> {
-                            sListener.onItemClick(item);
-                            dismiss();
-                        },
-                        "Disconnect "));
-        recyclerView.setLayoutManager(
-                new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
-        Button cancelBtn = rootView.findViewById(R.id.cancel_btn);
-        cancelBtn.setOnClickListener(v -> dismiss());
-        AlertDialog dialog = builder.setCustomTitle(customTitle).setView(rootView).create();
-        dialog.setCanceledOnTouchOutside(false);
-        return dialog;
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java
new file mode 100644
index 0000000..9fe4d50
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java
@@ -0,0 +1,56 @@
+/*
+ * 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 com.android.settings.connecteddevice.audiosharing;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+/** Feature provider for the audio sharing related features, */
+public interface AudioSharingFeatureProvider {
+
+    /** Create audio sharing device preference controller. */
+    @Nullable
+    AbstractPreferenceController createAudioSharingDevicePreferenceController(
+            @NonNull Context context,
+            @Nullable DashboardFragment fragment,
+            @Nullable Lifecycle lifecycle);
+
+    /** Create available media device preference controller. */
+    AbstractPreferenceController createAvailableMediaDeviceGroupController(
+            @NonNull Context context,
+            @Nullable DashboardFragment fragment,
+            @Nullable Lifecycle lifecycle);
+
+    /**
+     * Check if the device match the audio sharing filter.
+     *
+     * <p>The filter is used to filter device in "Media devices" section.
+     */
+    boolean isAudioSharingFilterMatched(
+            @NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager);
+
+    /** Handle preference onClick in "Media devices" section. */
+    void handleMediaDeviceOnClick(LocalBluetoothManager localBtManager);
+}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java
new file mode 100644
index 0000000..259ed7a
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java
@@ -0,0 +1,58 @@
+/*
+ * 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 com.android.settings.connecteddevice.audiosharing;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.settings.connecteddevice.AvailableMediaDeviceGroupController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+public class AudioSharingFeatureProviderImpl implements AudioSharingFeatureProvider {
+
+    @Nullable
+    @Override
+    public AbstractPreferenceController createAudioSharingDevicePreferenceController(
+            @NonNull Context context,
+            @Nullable DashboardFragment fragment,
+            @Nullable Lifecycle lifecycle) {
+        return null;
+    }
+
+    @Override
+    public AbstractPreferenceController createAvailableMediaDeviceGroupController(
+            @NonNull Context context,
+            @Nullable DashboardFragment fragment,
+            @Nullable Lifecycle lifecycle) {
+        return new AvailableMediaDeviceGroupController(context, fragment, lifecycle);
+    }
+
+    @Override
+    public boolean isAudioSharingFilterMatched(
+            @NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager) {
+        return false;
+    }
+
+    @Override
+    public void handleMediaDeviceOnClick(LocalBluetoothManager localBtManager) {}
+}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java
deleted file mode 100644
index 8791c11..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java
+++ /dev/null
@@ -1,175 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.app.Dialog;
-import android.app.settings.SettingsEnums;
-import android.graphics.Typeface;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-
-import java.util.ArrayList;
-import java.util.Locale;
-import java.util.stream.Collectors;
-
-public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
-    private static final String TAG = "AudioSharingJoinDialog";
-    private static final String BUNDLE_KEY_DEVICE_ITEMS = "bundle_key_device_items";
-    private static final String BUNDLE_KEY_NEW_DEVICE_NAME = "bundle_key_new_device_name";
-
-    // The host creates an instance of this dialog fragment must implement this interface to receive
-    // event callbacks.
-    public interface DialogEventListener {
-        /** Called when users click the share audio button in the dialog. */
-        void onShareClick();
-    }
-
-    private static DialogEventListener sListener;
-    private static @Nullable CachedBluetoothDevice sNewDevice;
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.DIALOG_START_AUDIO_SHARING;
-    }
-
-    /**
-     * Display the {@link AudioSharingJoinDialogFragment} dialog.
-     *
-     * <p>If the dialog is showing, update the dialog message and event listener.
-     *
-     * @param host The Fragment this dialog will be hosted.
-     * @param deviceItems The existing connected device items eligible for audio sharing.
-     * @param newDevice The latest connected device triggered this dialog.
-     * @param listener The callback to handle the user action on this dialog.
-     */
-    public static void show(
-            Fragment host,
-            ArrayList<AudioSharingDeviceItem> deviceItems,
-            CachedBluetoothDevice newDevice,
-            DialogEventListener listener) {
-        if (!AudioSharingUtils.isFeatureEnabled()) return;
-        final FragmentManager manager = host.getChildFragmentManager();
-        sListener = listener;
-        sNewDevice = newDevice;
-        Fragment dialog = manager.findFragmentByTag(TAG);
-        if (dialog != null
-                && ((DialogFragment) dialog).getDialog() != null
-                && ((DialogFragment) dialog).getDialog().isShowing()) {
-            Log.d(TAG, "Dialog is showing, update the content.");
-            updateDialog(
-                    deviceItems,
-                    newDevice.getName(),
-                    (AlertDialog) ((DialogFragment) dialog).getDialog());
-        } else {
-            Log.d(TAG, "Show up the dialog.");
-            final Bundle bundle = new Bundle();
-            bundle.putParcelableArrayList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
-            bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
-            final AudioSharingJoinDialogFragment dialogFrag = new AudioSharingJoinDialogFragment();
-            dialogFrag.setArguments(bundle);
-            dialogFrag.show(manager, TAG);
-        }
-    }
-
-    /** Return the tag of {@link AudioSharingJoinDialogFragment} dialog. */
-    public static @NonNull String tag() {
-        return TAG;
-    }
-
-    /** Get the latest connected device which triggers the dialog. */
-    public @Nullable CachedBluetoothDevice getDevice() {
-        return sNewDevice;
-    }
-
-    @Override
-    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
-        Bundle arguments = requireArguments();
-        ArrayList<AudioSharingDeviceItem> deviceItems =
-                arguments.getParcelableArrayList(BUNDLE_KEY_DEVICE_ITEMS);
-        String newDeviceName = arguments.getString(BUNDLE_KEY_NEW_DEVICE_NAME);
-        final AlertDialog.Builder builder =
-                new AlertDialog.Builder(getActivity()).setCancelable(false);
-        LayoutInflater inflater = LayoutInflater.from(builder.getContext());
-        // Set custom title for the dialog.
-        View customTitle =
-                inflater.inflate(R.layout.dialog_custom_title_audio_sharing, /* parent= */ null);
-        ImageView icon = customTitle.findViewById(R.id.title_icon);
-        icon.setImageResource(R.drawable.ic_bt_audio_sharing);
-        TextView title = customTitle.findViewById(R.id.title_text);
-        title.setText("Share your audio");
-        View rootView = inflater.inflate(R.layout.dialog_audio_sharing_join, /* parent= */ null);
-        TextView subtitle = rootView.findViewById(R.id.share_audio_subtitle);
-        subtitle.setText("This device's music and videos will play on both pairs of headphones");
-        Button shareBtn = rootView.findViewById(R.id.share_btn);
-        Button cancelBtn = rootView.findViewById(R.id.cancel_btn);
-        shareBtn.setOnClickListener(
-                v -> {
-                    sListener.onShareClick();
-                    dismiss();
-                });
-        shareBtn.setText("Share audio");
-        cancelBtn.setOnClickListener(v -> dismiss());
-        AlertDialog dialog = builder.setCustomTitle(customTitle).setView(rootView).create();
-        dialog.setCanceledOnTouchOutside(false);
-        updateDialog(deviceItems, newDeviceName, dialog);
-        dialog.show();
-        TextView messageView = (TextView) dialog.findViewById(android.R.id.message);
-        if (messageView != null) {
-            Typeface typeface = Typeface.create(Typeface.DEFAULT_FAMILY, Typeface.NORMAL);
-            messageView.setTypeface(typeface);
-            messageView.setTextDirection(View.TEXT_DIRECTION_LOCALE);
-            messageView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
-        } else {
-            Log.w(TAG, "Fail to update message style: message view is null");
-        }
-        return dialog;
-    }
-
-    private static void updateDialog(
-            ArrayList<AudioSharingDeviceItem> deviceItems,
-            String newDeviceName,
-            @NonNull AlertDialog dialog) {
-        if (deviceItems.isEmpty()) {
-            dialog.setMessage(newDeviceName);
-        } else {
-            dialog.setMessage(
-                    String.format(
-                            Locale.US,
-                            "%s and %s",
-                            deviceItems.stream()
-                                    .map(AudioSharingDeviceItem::getName)
-                                    .collect(Collectors.joining(", ")),
-                            newDeviceName));
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreference.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreference.java
deleted file mode 100644
index 44c947d..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreference.java
+++ /dev/null
@@ -1,110 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageButton;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-import com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsQrCodeFragment;
-import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.widget.ValidatedEditTextPreference;
-
-public class AudioSharingNamePreference extends ValidatedEditTextPreference {
-    private static final String TAG = "AudioSharingNamePreference";
-    private boolean mShowQrCodeIcon = false;
-
-    public AudioSharingNamePreference(
-            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        initialize();
-    }
-
-    public AudioSharingNamePreference(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        initialize();
-    }
-
-    public AudioSharingNamePreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        initialize();
-    }
-
-    public AudioSharingNamePreference(Context context) {
-        super(context);
-        initialize();
-    }
-
-    private void initialize() {
-        setLayoutResource(
-                com.android.settingslib.widget.preference.twotarget.R.layout.preference_two_target);
-        setWidgetLayoutResource(R.layout.preference_widget_qrcode);
-    }
-
-    void setShowQrCodeIcon(boolean show) {
-        mShowQrCodeIcon = show;
-        notifyChanged();
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder holder) {
-        super.onBindViewHolder(holder);
-
-        ImageButton shareButton = (ImageButton) holder.findViewById(R.id.button_icon);
-        View divider =
-                holder.findViewById(
-                        com.android.settingslib.widget.preference.twotarget.R.id
-                                .two_target_divider);
-
-        if (shareButton != null && divider != null) {
-            if (mShowQrCodeIcon) {
-                configureVisibleStateForQrCodeIcon(shareButton, divider);
-            } else {
-                configureInvisibleStateForQrCodeIcon(shareButton, divider);
-            }
-        } else {
-            Log.w(TAG, "onBindViewHolder() : shareButton or divider is null!");
-        }
-    }
-
-    private void configureVisibleStateForQrCodeIcon(ImageButton shareButton, View divider) {
-        divider.setVisibility(View.VISIBLE);
-        shareButton.setVisibility(View.VISIBLE);
-        shareButton.setImageDrawable(getContext().getDrawable(R.drawable.ic_qrcode_24dp));
-        shareButton.setOnClickListener(unused -> launchAudioSharingQrCodeFragment());
-    }
-
-    private void configureInvisibleStateForQrCodeIcon(ImageButton shareButton, View divider) {
-        divider.setVisibility(View.INVISIBLE);
-        shareButton.setVisibility(View.INVISIBLE);
-        shareButton.setOnClickListener(null);
-    }
-
-    private void launchAudioSharingQrCodeFragment() {
-        new SubSettingLauncher(getContext())
-                .setTitleText("Audio sharing QR code")
-                .setDestination(AudioStreamsQrCodeFragment.class.getName())
-                .setSourceMetricsCategory(SettingsEnums.AUDIO_SHARING_SETTINGS)
-                .launch();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java
deleted file mode 100644
index 644e05e..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java
+++ /dev/null
@@ -1,223 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import static com.android.settings.connecteddevice.audiosharing.AudioSharingUtils.isBroadcasting;
-
-import android.bluetooth.BluetoothLeBroadcast;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.widget.ValidatedEditTextPreference;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class AudioSharingNamePreferenceController extends BasePreferenceController
-        implements ValidatedEditTextPreference.Validator,
-                Preference.OnPreferenceChangeListener,
-                DefaultLifecycleObserver {
-
-    private static final String TAG = "AudioSharingNamePreferenceController";
-    private static final boolean DEBUG = BluetoothUtils.D;
-    private static final String PREF_KEY = "audio_sharing_stream_name";
-
-    private final BluetoothLeBroadcast.Callback mBroadcastCallback =
-            new BluetoothLeBroadcast.Callback() {
-                @Override
-                public void onBroadcastMetadataChanged(
-                        int broadcastId, BluetoothLeBroadcastMetadata metadata) {
-                    if (DEBUG) {
-                        Log.d(
-                                TAG,
-                                "onBroadcastMetadataChanged() broadcastId : "
-                                        + broadcastId
-                                        + " metadata: "
-                                        + metadata);
-                    }
-                    updateQrCodeIcon(true);
-                }
-
-                @Override
-                public void onBroadcastStartFailed(int reason) {}
-
-                @Override
-                public void onBroadcastStarted(int reason, int broadcastId) {}
-
-                @Override
-                public void onBroadcastStopFailed(int reason) {}
-
-                @Override
-                public void onBroadcastStopped(int reason, int broadcastId) {
-                    if (DEBUG) {
-                        Log.d(
-                                TAG,
-                                "onBroadcastStopped() reason : "
-                                        + reason
-                                        + " broadcastId: "
-                                        + broadcastId);
-                    }
-                    updateQrCodeIcon(false);
-                }
-
-                @Override
-                public void onBroadcastUpdateFailed(int reason, int broadcastId) {
-                    Log.w(TAG, "onBroadcastUpdateFailed() reason : " + reason);
-                    // Do nothing if update failed.
-                }
-
-                @Override
-                public void onBroadcastUpdated(int reason, int broadcastId) {
-                    if (DEBUG) {
-                        Log.d(TAG, "onBroadcastUpdated() reason : " + reason);
-                    }
-                    updateBroadcastName();
-                }
-
-                @Override
-                public void onPlaybackStarted(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStopped(int reason, int broadcastId) {}
-            };
-
-    @Nullable private final LocalBluetoothManager mLocalBtManager;
-    @Nullable private final LocalBluetoothLeBroadcast mBroadcast;
-    private final Executor mExecutor;
-    private final AudioSharingNameTextValidator mAudioSharingNameTextValidator;
-    @Nullable private AudioSharingNamePreference mPreference;
-
-    public AudioSharingNamePreferenceController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mLocalBtManager = Utils.getLocalBluetoothManager(context);
-        mBroadcast =
-                (mLocalBtManager != null)
-                        ? mLocalBtManager.getProfileManager().getLeAudioBroadcastProfile()
-                        : null;
-        mAudioSharingNameTextValidator = new AudioSharingNameTextValidator();
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mBroadcast != null) {
-            mBroadcast.registerServiceCallBack(mExecutor, mBroadcastCallback);
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mBroadcast != null) {
-            mBroadcast.unregisterServiceCallBack(mBroadcastCallback);
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference = screen.findPreference(getPreferenceKey());
-        if (mPreference != null) {
-            mPreference.setValidator(this);
-            updateBroadcastName();
-            updateQrCodeIcon(isBroadcasting(mLocalBtManager));
-        }
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return PREF_KEY;
-    }
-
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        if (mPreference != null
-                && mPreference.getSummary() != null
-                && ((String) newValue).contentEquals(mPreference.getSummary())) {
-            return false;
-        }
-
-        var unused =
-                ThreadUtils.postOnBackgroundThread(
-                        () -> {
-                            if (mBroadcast != null) {
-                                mBroadcast.setProgramInfo((String) newValue);
-                                if (isBroadcasting(mLocalBtManager)) {
-                                    // Update broadcast, UI update will be handled after callback
-                                    mBroadcast.updateBroadcast();
-                                } else {
-                                    // Directly update UI if no ongoing broadcast
-                                    updateBroadcastName();
-                                }
-                            }
-                        });
-        return true;
-    }
-
-    private void updateBroadcastName() {
-        if (mPreference != null) {
-            var unused =
-                    ThreadUtils.postOnBackgroundThread(
-                            () -> {
-                                if (mBroadcast != null) {
-                                    String name = mBroadcast.getProgramInfo();
-                                    ThreadUtils.postOnMainThread(
-                                            () -> {
-                                                if (mPreference != null) {
-                                                    mPreference.setText(name);
-                                                    mPreference.setSummary(name);
-                                                }
-                                            });
-                                }
-                            });
-        }
-    }
-
-    private void updateQrCodeIcon(boolean show) {
-        if (mPreference != null) {
-            ThreadUtils.postOnMainThread(
-                    () -> {
-                        if (mPreference != null) {
-                            mPreference.setShowQrCodeIcon(show);
-                        }
-                    });
-        }
-    }
-
-    @Override
-    public boolean isTextValid(String value) {
-        return mAudioSharingNameTextValidator.isTextValid(value);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNameTextValidator.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNameTextValidator.java
deleted file mode 100644
index 2022eb2..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNameTextValidator.java
+++ /dev/null
@@ -1,44 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import com.android.settings.widget.ValidatedEditTextPreference;
-
-import java.nio.charset.StandardCharsets;
-
-/**
- * Validator for Audio Sharing Name, which should be a UTF-8 encoded string containing a minimum of
- * 4 characters and a maximum of 32 human-readable characters.
- */
-public class AudioSharingNameTextValidator implements ValidatedEditTextPreference.Validator {
-    private static final int MIN_LENGTH = 4;
-    private static final int MAX_LENGTH = 32;
-
-    @Override
-    public boolean isTextValid(String value) {
-        if (value == null || value.length() < MIN_LENGTH || value.length() > MAX_LENGTH) {
-            return false;
-        }
-        return isValidUTF8(value);
-    }
-
-    private static boolean isValidUTF8(String value) {
-        byte[] bytes = value.getBytes(StandardCharsets.UTF_8);
-        String reconstructedString = new String(bytes, StandardCharsets.UTF_8);
-        return value.equals(reconstructedString);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java
deleted file mode 100644
index da0eb2e..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java
+++ /dev/null
@@ -1,130 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothLeBroadcast;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.content.Context;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.widget.ValidatedEditTextPreference;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class AudioSharingPasswordPreferenceController extends BasePreferenceController
-        implements ValidatedEditTextPreference.Validator,
-                Preference.OnPreferenceChangeListener,
-                DefaultLifecycleObserver {
-    private static final String PREF_KEY = "audio_sharing_stream_password";
-
-    private final BluetoothLeBroadcast.Callback mBroadcastCallback =
-            new BluetoothLeBroadcast.Callback() {
-                @Override
-                public void onBroadcastMetadataChanged(
-                        int broadcastId, BluetoothLeBroadcastMetadata metadata) {}
-
-                @Override
-                public void onBroadcastStartFailed(int reason) {}
-
-                @Override
-                public void onBroadcastStarted(int reason, int broadcastId) {}
-
-                @Override
-                public void onBroadcastStopFailed(int reason) {}
-
-                @Override
-                public void onBroadcastStopped(int reason, int broadcastId) {}
-
-                @Override
-                public void onBroadcastUpdateFailed(int reason, int broadcastId) {}
-
-                @Override
-                public void onBroadcastUpdated(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStarted(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStopped(int reason, int broadcastId) {}
-            };
-    @Nullable private final LocalBluetoothLeBroadcast mBroadcast;
-    private final Executor mExecutor;
-    private final AudioSharingPasswordValidator mAudioSharingPasswordValidator;
-    @Nullable private ValidatedEditTextPreference mPreference;
-
-    public AudioSharingPasswordPreferenceController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mBroadcast =
-                Utils.getLocalBtManager(context).getProfileManager().getLeAudioBroadcastProfile();
-        mAudioSharingPasswordValidator = new AudioSharingPasswordValidator();
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mBroadcast != null) {
-            mBroadcast.registerServiceCallBack(mExecutor, mBroadcastCallback);
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mBroadcast != null) {
-            mBroadcast.unregisterServiceCallBack(mBroadcastCallback);
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference = screen.findPreference(getPreferenceKey());
-        if (mPreference != null) {
-            mPreference.setValidator(this);
-        }
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return PREF_KEY;
-    }
-
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        // TODO(chelseahao): implement
-        return true;
-    }
-
-    @Override
-    public boolean isTextValid(String value) {
-        return mAudioSharingPasswordValidator.isTextValid(value);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordValidator.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordValidator.java
deleted file mode 100644
index dbb40ec..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordValidator.java
+++ /dev/null
@@ -1,51 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import com.android.settings.widget.ValidatedEditTextPreference;
-
-import java.nio.charset.StandardCharsets;
-
-/**
- * Validator for Audio Sharing Password, which should be a UTF-8 string that has at least 4 octets
- * and should not exceed 16 octets.
- */
-public class AudioSharingPasswordValidator implements ValidatedEditTextPreference.Validator {
-    private static final int MIN_OCTETS = 4;
-    private static final int MAX_OCTETS = 16;
-
-    @Override
-    public boolean isTextValid(String value) {
-        if (value == null
-                || getOctetsCount(value) < MIN_OCTETS
-                || getOctetsCount(value) > MAX_OCTETS) {
-            return false;
-        }
-
-        return isValidUTF8(value);
-    }
-
-    private static int getOctetsCount(String value) {
-        return value.getBytes(StandardCharsets.UTF_8).length;
-    }
-
-    private static boolean isValidUTF8(String value) {
-        byte[] bytes = value.getBytes(StandardCharsets.UTF_8);
-        String reconstructedString = new String(bytes, StandardCharsets.UTF_8);
-        return value.equals(reconstructedString);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceController.java
deleted file mode 100644
index 6722219..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPlaySoundPreferenceController.java
+++ /dev/null
@@ -1,98 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.media.AudioAttributes;
-import android.media.AudioManager;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.R;
-
-public class AudioSharingPlaySoundPreferenceController
-        extends AudioSharingBasePreferenceController {
-
-    private static final String TAG = "AudioSharingPlaySoundPreferenceController";
-
-    private static final String PREF_KEY = "audio_sharing_play_sound";
-
-    private final Ringtone mRingtone;
-
-    public AudioSharingPlaySoundPreferenceController(Context context) {
-        super(context, PREF_KEY);
-        mRingtone = RingtoneManager.getRingtone(context, getMediaVolumeUri());
-        if (mRingtone != null) {
-            mRingtone.setStreamType(AudioManager.STREAM_MUSIC);
-        }
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference.setVisible(mRingtone != null);
-        mPreference.setOnPreferenceClickListener(
-                (v) -> {
-                    if (mRingtone == null) {
-                        Log.d(TAG, "Skip onClick due to ringtone is null");
-                        return true;
-                    }
-                    try {
-                        mRingtone.setAudioAttributes(
-                                new AudioAttributes.Builder(mRingtone.getAudioAttributes())
-                                        .setFlags(AudioAttributes.FLAG_BYPASS_MUTE)
-                                        .addTag("VX_AOSP_SAMPLESOUND")
-                                        .build());
-                        if (!mRingtone.isPlaying()) {
-                            mRingtone.play();
-                        }
-                    } catch (Throwable e) {
-                        Log.w(TAG, "Fail to play sample, error = " + e);
-                    }
-                    return true;
-                });
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        super.onStop(owner);
-        if (mRingtone != null && mRingtone.isPlaying()) {
-            mRingtone.stop();
-        }
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return PREF_KEY;
-    }
-
-    private Uri getMediaVolumeUri() {
-        return Uri.parse(
-                ContentResolver.SCHEME_ANDROID_RESOURCE
-                        + "://"
-                        + mContext.getPackageName()
-                        + "/"
-                        + R.raw.media_volume);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceController.java
deleted file mode 100644
index 16c9888..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceController.java
+++ /dev/null
@@ -1,138 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothLeBroadcast;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.content.Context;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class AudioSharingPreferenceController extends BasePreferenceController
-        implements DefaultLifecycleObserver, BluetoothCallback {
-    private static final String TAG = "AudioSharingPreferenceController";
-
-    private final LocalBluetoothManager mLocalBtManager;
-    private final Executor mExecutor;
-    @Nullable private LocalBluetoothLeBroadcast mBroadcast = null;
-    @Nullable private Preference mPreference;
-
-    private final BluetoothLeBroadcast.Callback mBroadcastCallback =
-            new BluetoothLeBroadcast.Callback() {
-                @Override
-                public void onBroadcastStarted(int reason, int broadcastId) {
-                    if (mPreference != null) {
-                        refreshSummary(mPreference);
-                    }
-                }
-
-                @Override
-                public void onBroadcastStartFailed(int reason) {}
-
-                @Override
-                public void onBroadcastMetadataChanged(
-                        int broadcastId, @NonNull BluetoothLeBroadcastMetadata metadata) {}
-
-                @Override
-                public void onBroadcastStopped(int reason, int broadcastId) {
-                    if (mPreference != null) {
-                        refreshSummary(mPreference);
-                    }
-                }
-
-                @Override
-                public void onBroadcastStopFailed(int reason) {}
-
-                @Override
-                public void onBroadcastUpdated(int reason, int broadcastId) {}
-
-                @Override
-                public void onBroadcastUpdateFailed(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStarted(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStopped(int reason, int broadcastId) {}
-            };
-
-    public AudioSharingPreferenceController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mLocalBtManager = Utils.getLocalBtManager(context);
-        if (mLocalBtManager != null) {
-            mBroadcast = mLocalBtManager.getProfileManager().getLeAudioBroadcastProfile();
-        }
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mLocalBtManager != null) {
-            mLocalBtManager.getEventManager().registerCallback(this);
-        }
-        if (mBroadcast != null) {
-            mBroadcast.registerServiceCallBack(mExecutor, mBroadcastCallback);
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mLocalBtManager != null) {
-            mLocalBtManager.getEventManager().unregisterCallback(this);
-        }
-        if (mBroadcast != null) {
-            mBroadcast.unregisterServiceCallBack(mBroadcastCallback);
-        }
-    }
-
-    @Override
-    public void displayPreference(@NonNull PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference = screen.findPreference(getPreferenceKey());
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public CharSequence getSummary() {
-        return AudioSharingUtils.isBroadcasting(mLocalBtManager) ? "On" : "Off";
-    }
-
-    @Override
-    public void onBluetoothStateChanged(@AdapterState int bluetoothState) {
-        if (mPreference != null) {
-            refreshSummary(mPreference);
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java
deleted file mode 100644
index 3ba41f7..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java
+++ /dev/null
@@ -1,138 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.app.Dialog;
-import android.app.settings.SettingsEnums;
-import android.graphics.Typeface;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-
-public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
-    private static final String TAG = "AudioSharingStopDialog";
-
-    private static final String BUNDLE_KEY_NEW_DEVICE_NAME = "bundle_key_new_device_name";
-
-    // The host creates an instance of this dialog fragment must implement this interface to receive
-    // event callbacks.
-    public interface DialogEventListener {
-        /** Called when users click the stop sharing button in the dialog. */
-        void onStopSharingClick();
-    }
-
-    private static DialogEventListener sListener;
-    private static @Nullable CachedBluetoothDevice sNewDevice;
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.DIALOG_STOP_AUDIO_SHARING;
-    }
-
-    /**
-     * Display the {@link AudioSharingStopDialogFragment} dialog.
-     *
-     * <p>If the dialog is showing, update the dialog message and event listener.
-     *
-     * @param host The Fragment this dialog will be hosted.
-     * @param newDevice The latest connected device triggered this dialog.
-     * @param listener The callback to handle the user action on this dialog.
-     */
-    public static void show(
-            Fragment host, CachedBluetoothDevice newDevice, DialogEventListener listener) {
-        if (!AudioSharingUtils.isFeatureEnabled()) return;
-        final FragmentManager manager = host.getChildFragmentManager();
-        sListener = listener;
-        sNewDevice = newDevice;
-        Fragment dialog = manager.findFragmentByTag(TAG);
-        if (dialog != null
-                && ((DialogFragment) dialog).getDialog() != null
-                && ((DialogFragment) dialog).getDialog().isShowing()) {
-            Log.d(TAG, "Dialog is showing, update the content.");
-            updateDialog(newDevice.getName(), (AlertDialog) ((DialogFragment) dialog).getDialog());
-        } else {
-            Log.d(TAG, "Show up the dialog.");
-            final Bundle bundle = new Bundle();
-            bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
-            AudioSharingStopDialogFragment dialogFrag = new AudioSharingStopDialogFragment();
-            dialogFrag.setArguments(bundle);
-            dialogFrag.show(manager, TAG);
-        }
-    }
-
-    /** Return the tag of {@link AudioSharingStopDialogFragment} dialog. */
-    public static @NonNull String tag() {
-        return TAG;
-    }
-
-    /** Get the latest connected device which triggers the dialog. */
-    public @Nullable CachedBluetoothDevice getDevice() {
-        return sNewDevice;
-    }
-
-    @Override
-    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
-        Bundle arguments = requireArguments();
-        String newDeviceName = arguments.getString(BUNDLE_KEY_NEW_DEVICE_NAME);
-        final AlertDialog.Builder builder =
-                new AlertDialog.Builder(getActivity()).setCancelable(false);
-        LayoutInflater inflater = LayoutInflater.from(builder.getContext());
-        // Set custom title for the dialog.
-        View customTitle =
-                inflater.inflate(R.layout.dialog_custom_title_audio_sharing, /* parent= */ null);
-        ImageView icon = customTitle.findViewById(R.id.title_icon);
-        icon.setImageResource(R.drawable.ic_warning_24dp);
-        TextView title = customTitle.findViewById(R.id.title_text);
-        title.setText("Stop sharing audio?");
-        builder.setPositiveButton(
-                "Stop sharing", (dialog, which) -> sListener.onStopSharingClick());
-        builder.setNegativeButton("Cancel", (dialog, which) -> dismiss());
-        AlertDialog dialog = builder.setCustomTitle(customTitle).create();
-        dialog.setCanceledOnTouchOutside(false);
-        updateDialog(newDeviceName, dialog);
-        dialog.show();
-        TextView messageView = (TextView) dialog.findViewById(android.R.id.message);
-        if (messageView != null) {
-            Typeface typeface = Typeface.create(Typeface.DEFAULT_FAMILY, Typeface.NORMAL);
-            messageView.setTypeface(typeface);
-            messageView.setTextDirection(View.TEXT_DIRECTION_LOCALE);
-            messageView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
-        } else {
-            Log.w(TAG, "sssFail to update dialog: message view is null");
-        }
-        return dialog;
-    }
-
-    private static void updateDialog(String newDeviceName, @NonNull AlertDialog dialog) {
-        dialog.setMessage(
-                newDeviceName + " wants to connect, headphones in audio sharing will disconnect.");
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
deleted file mode 100644
index b82c94d..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
+++ /dev/null
@@ -1,395 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcast;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.util.Log;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.VisibleForTesting;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.widget.SettingsMainSwitchBar;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-import com.google.common.collect.ImmutableList;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
-
-public class AudioSharingSwitchBarController extends BasePreferenceController
-        implements DefaultLifecycleObserver, OnCheckedChangeListener {
-    private static final String TAG = "AudioSharingSwitchBarCtl";
-    private static final String PREF_KEY = "audio_sharing_main_switch";
-
-    interface OnSwitchBarChangedListener {
-        void onSwitchBarChanged();
-    }
-
-    private final SettingsMainSwitchBar mSwitchBar;
-    private final BluetoothAdapter mBluetoothAdapter;
-    private final LocalBluetoothManager mBtManager;
-    private final LocalBluetoothLeBroadcast mBroadcast;
-    private final LocalBluetoothLeBroadcastAssistant mAssistant;
-    private final Executor mExecutor;
-    private final OnSwitchBarChangedListener mListener;
-    private DashboardFragment mFragment;
-    private Map<Integer, List<CachedBluetoothDevice>> mGroupedConnectedDevices = new HashMap<>();
-    private List<BluetoothDevice> mTargetActiveSinks = new ArrayList<>();
-    private ArrayList<AudioSharingDeviceItem> mDeviceItemsForSharing = new ArrayList<>();
-    @VisibleForTesting IntentFilter mIntentFilter;
-
-    @VisibleForTesting
-    BroadcastReceiver mReceiver =
-            new BroadcastReceiver() {
-                @Override
-                public void onReceive(Context context, Intent intent) {
-                    if (!BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) return;
-                    int adapterState =
-                            intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothDevice.ERROR);
-                    mSwitchBar.setChecked(isBroadcasting());
-                    mSwitchBar.setEnabled(adapterState == BluetoothAdapter.STATE_ON);
-                    mListener.onSwitchBarChanged();
-                }
-            };
-
-    private final BluetoothLeBroadcast.Callback mBroadcastCallback =
-            new BluetoothLeBroadcast.Callback() {
-                @Override
-                public void onBroadcastStarted(int reason, int broadcastId) {
-                    Log.d(
-                            TAG,
-                            "onBroadcastStarted(), reason = "
-                                    + reason
-                                    + ", broadcastId = "
-                                    + broadcastId);
-                    updateSwitch();
-                }
-
-                @Override
-                public void onBroadcastStartFailed(int reason) {
-                    Log.d(TAG, "onBroadcastStartFailed(), reason = " + reason);
-                    // TODO: handle broadcast start fail
-                    updateSwitch();
-                }
-
-                @Override
-                public void onBroadcastMetadataChanged(
-                        int broadcastId, @NonNull BluetoothLeBroadcastMetadata metadata) {
-                    Log.d(
-                            TAG,
-                            "onBroadcastMetadataChanged(), broadcastId = "
-                                    + broadcastId
-                                    + ", metadata = "
-                                    + metadata.getBroadcastName());
-                    addSourceToTargetSinks(mTargetActiveSinks);
-                    if (mFragment == null) {
-                        Log.w(TAG, "Dialog fail to show due to null fragment.");
-                        return;
-                    }
-                    ThreadUtils.postOnMainThread(
-                            () -> {
-                                AudioSharingDialogFragment.show(
-                                        mFragment,
-                                        mDeviceItemsForSharing,
-                                        item -> {
-                                            addSourceToTargetSinks(
-                                                    mGroupedConnectedDevices
-                                                            .getOrDefault(
-                                                                    item.getGroupId(),
-                                                                    ImmutableList.of())
-                                                            .stream()
-                                                            .map(CachedBluetoothDevice::getDevice)
-                                                            .collect(Collectors.toList()));
-                                        });
-                            });
-                }
-
-                @Override
-                public void onBroadcastStopped(int reason, int broadcastId) {
-                    Log.d(
-                            TAG,
-                            "onBroadcastStopped(), reason = "
-                                    + reason
-                                    + ", broadcastId = "
-                                    + broadcastId);
-                    updateSwitch();
-                }
-
-                @Override
-                public void onBroadcastStopFailed(int reason) {
-                    Log.d(TAG, "onBroadcastStopFailed(), reason = " + reason);
-                    // TODO: handle broadcast stop fail
-                    updateSwitch();
-                }
-
-                @Override
-                public void onBroadcastUpdated(int reason, int broadcastId) {}
-
-                @Override
-                public void onBroadcastUpdateFailed(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStarted(int reason, int broadcastId) {}
-
-                @Override
-                public void onPlaybackStopped(int reason, int broadcastId) {}
-            };
-
-    private BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
-            new BluetoothLeBroadcastAssistant.Callback() {
-                @Override
-                public void onSearchStarted(int reason) {}
-
-                @Override
-                public void onSearchStartFailed(int reason) {}
-
-                @Override
-                public void onSearchStopped(int reason) {}
-
-                @Override
-                public void onSearchStopFailed(int reason) {}
-
-                @Override
-                public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {}
-
-                @Override
-                public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceAdded(), sink = "
-                                    + sink
-                                    + ", sourceId = "
-                                    + sourceId
-                                    + ", reason = "
-                                    + reason);
-                }
-
-                @Override
-                public void onSourceAddFailed(
-                        @NonNull BluetoothDevice sink,
-                        @NonNull BluetoothLeBroadcastMetadata source,
-                        int reason) {
-                    Log.d(
-                            TAG,
-                            "onSourceAddFailed(), sink = "
-                                    + sink
-                                    + ", source = "
-                                    + source
-                                    + ", reason = "
-                                    + reason);
-                    AudioSharingUtils.toastMessage(
-                            mContext,
-                            String.format(
-                                    Locale.US,
-                                    "Fail to add source to %s reason %d",
-                                    sink.getAddress(),
-                                    reason));
-                }
-
-                @Override
-                public void onSourceModified(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceModifyFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceRemoved(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceRemoveFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onReceiveStateChanged(
-                        BluetoothDevice sink,
-                        int sourceId,
-                        BluetoothLeBroadcastReceiveState state) {}
-            };
-
-    AudioSharingSwitchBarController(
-            Context context, SettingsMainSwitchBar switchBar, OnSwitchBarChangedListener listener) {
-        super(context, PREF_KEY);
-        mSwitchBar = switchBar;
-        mListener = listener;
-        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
-        mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
-        mBtManager = Utils.getLocalBtManager(context);
-        mBroadcast = mBtManager.getProfileManager().getLeAudioBroadcastProfile();
-        mAssistant = mBtManager.getProfileManager().getLeAudioBroadcastAssistantProfile();
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        mSwitchBar.addOnSwitchChangeListener(this);
-        mContext.registerReceiver(mReceiver, mIntentFilter, Context.RECEIVER_EXPORTED_UNAUDITED);
-        if (mBroadcast != null) {
-            mBroadcast.registerServiceCallBack(mExecutor, mBroadcastCallback);
-        }
-        if (mAssistant != null) {
-            mAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
-        }
-        if (isAvailable()) {
-            mSwitchBar.setChecked(isBroadcasting());
-            mSwitchBar.setEnabled(mBluetoothAdapter != null && mBluetoothAdapter.isEnabled());
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        mSwitchBar.removeOnSwitchChangeListener(this);
-        mContext.unregisterReceiver(mReceiver);
-        if (mBroadcast != null) {
-            mBroadcast.unregisterServiceCallBack(mBroadcastCallback);
-        }
-        if (mAssistant != null) {
-            mAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
-        }
-    }
-
-    @Override
-    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-        // Filter out unnecessary callbacks when switch is disabled.
-        if (!buttonView.isEnabled()) return;
-        if (isChecked) {
-            startAudioSharing();
-        } else {
-            stopAudioSharing();
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    /**
-     * Initialize the controller.
-     *
-     * @param fragment The fragment to host the {@link AudioSharingSwitchBarController} dialog.
-     */
-    public void init(DashboardFragment fragment) {
-        this.mFragment = fragment;
-    }
-
-    private void startAudioSharing() {
-        mSwitchBar.setEnabled(false);
-        if (mBroadcast == null || isBroadcasting()) {
-            Log.d(TAG, "Already in broadcasting or broadcast not support, ignore!");
-            mSwitchBar.setEnabled(true);
-            return;
-        }
-        mGroupedConnectedDevices = AudioSharingUtils.fetchConnectedDevicesByGroupId(mBtManager);
-        ArrayList<AudioSharingDeviceItem> deviceItems =
-                AudioSharingUtils.buildOrderedConnectedLeadAudioSharingDeviceItem(
-                        mBtManager, mGroupedConnectedDevices, /* filterByInSharing= */ false);
-        // deviceItems is ordered. The active device is the first place if exits.
-        mDeviceItemsForSharing = new ArrayList<>(deviceItems);
-        if (!deviceItems.isEmpty() && deviceItems.get(0).isActive()) {
-            for (CachedBluetoothDevice device :
-                    mGroupedConnectedDevices.getOrDefault(
-                            deviceItems.get(0).getGroupId(), ImmutableList.of())) {
-                // If active device exists for audio sharing, share to it
-                // automatically once the broadcast is started.
-                mTargetActiveSinks.add(device.getDevice());
-            }
-            mDeviceItemsForSharing.remove(0);
-        }
-        mBroadcast.startPrivateBroadcast();
-    }
-
-    private void stopAudioSharing() {
-        mSwitchBar.setEnabled(false);
-        if (mBroadcast == null || !isBroadcasting()) {
-            Log.d(TAG, "Already not broadcasting or broadcast not support, ignore!");
-            mSwitchBar.setEnabled(true);
-            return;
-        }
-        mBroadcast.stopBroadcast(mBroadcast.getLatestBroadcastId());
-    }
-
-    private void updateSwitch() {
-        var unused =
-                ThreadUtils.postOnBackgroundThread(
-                        () -> {
-                            boolean isBroadcasting = isBroadcasting();
-                            ThreadUtils.postOnMainThread(
-                                    () -> {
-                                        if (mSwitchBar.isChecked() != isBroadcasting) {
-                                            mSwitchBar.setChecked(isBroadcasting);
-                                        }
-                                        mSwitchBar.setEnabled(true);
-                                        mListener.onSwitchBarChanged();
-                                    });
-                        });
-    }
-
-    private boolean isBroadcasting() {
-        return mBroadcast != null && mBroadcast.isEnabled(null);
-    }
-
-    private void addSourceToTargetSinks(List<BluetoothDevice> sinks) {
-        if (sinks.isEmpty() || mBroadcast == null || mAssistant == null) {
-            Log.d(TAG, "Skip adding source to target.");
-            return;
-        }
-        BluetoothLeBroadcastMetadata broadcastMetadata =
-                mBroadcast.getLatestBluetoothLeBroadcastMetadata();
-        if (broadcastMetadata == null) {
-            Log.e(TAG, "Error: There is no broadcastMetadata.");
-            return;
-        }
-        for (BluetoothDevice sink : sinks) {
-            Log.d(
-                    TAG,
-                    "Add broadcast with broadcastId: "
-                            + broadcastMetadata.getBroadcastId()
-                            + "to the device: "
-                            + sink.getAnonymizedAddress());
-            mAssistant.addSource(sink, broadcastMetadata, /* isGroupOp= */ false);
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingUtils.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingUtils.java
deleted file mode 100644
index f489e9c..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingUtils.java
+++ /dev/null
@@ -1,408 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothCsipSetCoordinator;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.bluetooth.BluetoothStatusCodes;
-import android.content.Context;
-import android.provider.Settings;
-import android.util.Log;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-
-import com.android.settings.flags.Flags;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LeAudioProfile;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfile;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import javax.annotation.Nullable;
-
-public class AudioSharingUtils {
-    private static final String TAG = "AudioSharingUtils";
-    private static final boolean DEBUG = BluetoothUtils.D;
-
-    /**
-     * Fetch {@link CachedBluetoothDevice}s connected to the broadcast assistant. The devices are
-     * grouped by CSIP group id.
-     *
-     * @param localBtManager The BT manager to provide BT functions.
-     * @return A map of connected devices grouped by CSIP group id.
-     */
-    public static Map<Integer, List<CachedBluetoothDevice>> fetchConnectedDevicesByGroupId(
-            LocalBluetoothManager localBtManager) {
-        Map<Integer, List<CachedBluetoothDevice>> groupedDevices = new HashMap<>();
-        if (localBtManager == null) {
-            Log.d(TAG, "Skip fetchConnectedDevicesByGroupId due to bt manager is null");
-            return groupedDevices;
-        }
-        LocalBluetoothLeBroadcastAssistant assistant =
-                localBtManager.getProfileManager().getLeAudioBroadcastAssistantProfile();
-        if (assistant == null) {
-            Log.d(TAG, "Skip fetchConnectedDevicesByGroupId due to assistant profile is null");
-            return groupedDevices;
-        }
-        List<BluetoothDevice> connectedDevices = assistant.getConnectedDevices();
-        CachedBluetoothDeviceManager cacheManager = localBtManager.getCachedDeviceManager();
-        for (BluetoothDevice device : connectedDevices) {
-            CachedBluetoothDevice cachedDevice = cacheManager.findDevice(device);
-            if (cachedDevice == null) {
-                Log.d(TAG, "Skip device due to not being cached: " + device.getAnonymizedAddress());
-                continue;
-            }
-            int groupId = getGroupId(cachedDevice);
-            if (groupId == BluetoothCsipSetCoordinator.GROUP_ID_INVALID) {
-                Log.d(
-                        TAG,
-                        "Skip device due to no valid group id: " + device.getAnonymizedAddress());
-                continue;
-            }
-            if (!groupedDevices.containsKey(groupId)) {
-                groupedDevices.put(groupId, new ArrayList<>());
-            }
-            groupedDevices.get(groupId).add(cachedDevice);
-        }
-        if (DEBUG) {
-            Log.d(TAG, "fetchConnectedDevicesByGroupId: " + groupedDevices);
-        }
-        return groupedDevices;
-    }
-
-    /**
-     * Fetch a list of ordered connected lead {@link CachedBluetoothDevice}s eligible for audio
-     * sharing. The active device is placed in the first place if it exists. The devices can be
-     * filtered by whether it is already in the audio sharing session.
-     *
-     * @param localBtManager The BT manager to provide BT functions. *
-     * @param groupedConnectedDevices devices connected to broadcast assistant grouped by CSIP group
-     *     id.
-     * @param filterByInSharing Whether to filter the device by if is already in the sharing
-     *     session.
-     * @return A list of ordered connected devices eligible for the audio sharing. The active device
-     *     is placed in the first place if it exists.
-     */
-    public static List<CachedBluetoothDevice> buildOrderedConnectedLeadDevices(
-            LocalBluetoothManager localBtManager,
-            Map<Integer, List<CachedBluetoothDevice>> groupedConnectedDevices,
-            boolean filterByInSharing) {
-        List<CachedBluetoothDevice> orderedDevices = new ArrayList<>();
-        for (List<CachedBluetoothDevice> devices : groupedConnectedDevices.values()) {
-            @Nullable CachedBluetoothDevice leadDevice = getLeadDevice(devices);
-            if (leadDevice == null) {
-                Log.d(TAG, "Skip due to no lead device");
-                continue;
-            }
-            if (filterByInSharing && !hasBroadcastSource(leadDevice, localBtManager)) {
-                Log.d(
-                        TAG,
-                        "Filtered the device due to not in sharing session: "
-                                + leadDevice.getDevice().getAnonymizedAddress());
-                continue;
-            }
-            orderedDevices.add(leadDevice);
-        }
-        orderedDevices.sort(
-                (CachedBluetoothDevice d1, CachedBluetoothDevice d2) -> {
-                    // Active above not inactive
-                    int comparison =
-                            (isActiveLeAudioDevice(d2) ? 1 : 0)
-                                    - (isActiveLeAudioDevice(d1) ? 1 : 0);
-                    if (comparison != 0) return comparison;
-                    // Bonded above not bonded
-                    comparison =
-                            (d2.getBondState() == BluetoothDevice.BOND_BONDED ? 1 : 0)
-                                    - (d1.getBondState() == BluetoothDevice.BOND_BONDED ? 1 : 0);
-                    if (comparison != 0) return comparison;
-                    // Bond timestamp available above unavailable
-                    comparison =
-                            (d2.getBondTimestamp() != null ? 1 : 0)
-                                    - (d1.getBondTimestamp() != null ? 1 : 0);
-                    if (comparison != 0) return comparison;
-                    // Order by bond timestamp if it is available
-                    // Otherwise order by device name
-                    return d1.getBondTimestamp() != null
-                            ? d1.getBondTimestamp().compareTo(d2.getBondTimestamp())
-                            : d1.getName().compareTo(d2.getName());
-                });
-        return orderedDevices;
-    }
-
-    /**
-     * Get the lead device from a list of devices with same group id.
-     *
-     * @param devices A list of devices with same group id.
-     * @return The lead device
-     */
-    @Nullable
-    public static CachedBluetoothDevice getLeadDevice(
-            @NonNull List<CachedBluetoothDevice> devices) {
-        if (devices.isEmpty()) return null;
-        for (CachedBluetoothDevice device : devices) {
-            if (!device.getMemberDevice().isEmpty()) {
-                return device;
-            }
-        }
-        CachedBluetoothDevice leadDevice = devices.get(0);
-        Log.d(
-                TAG,
-                "No lead device in the group, pick arbitrary device as the lead: "
-                        + leadDevice.getDevice().getAnonymizedAddress());
-        return leadDevice;
-    }
-
-    /**
-     * Fetch a list of ordered connected lead {@link AudioSharingDeviceItem}s eligible for audio
-     * sharing. The active device is placed in the first place if it exists. The devices can be
-     * filtered by whether it is already in the audio sharing session.
-     *
-     * @param localBtManager The BT manager to provide BT functions. *
-     * @param groupedConnectedDevices devices connected to broadcast assistant grouped by CSIP group
-     *     id.
-     * @param filterByInSharing Whether to filter the device by if is already in the sharing
-     *     session.
-     * @return A list of ordered connected devices eligible for the audio sharing. The active device
-     *     is placed in the first place if it exists.
-     */
-    public static ArrayList<AudioSharingDeviceItem> buildOrderedConnectedLeadAudioSharingDeviceItem(
-            LocalBluetoothManager localBtManager,
-            Map<Integer, List<CachedBluetoothDevice>> groupedConnectedDevices,
-            boolean filterByInSharing) {
-        return buildOrderedConnectedLeadDevices(
-                        localBtManager, groupedConnectedDevices, filterByInSharing)
-                .stream()
-                .map(device -> buildAudioSharingDeviceItem(device))
-                .collect(Collectors.toCollection(ArrayList::new));
-    }
-
-    /** Build {@link AudioSharingDeviceItem} from {@link CachedBluetoothDevice}. */
-    public static AudioSharingDeviceItem buildAudioSharingDeviceItem(
-            CachedBluetoothDevice cachedDevice) {
-        return new AudioSharingDeviceItem(
-                cachedDevice.getName(),
-                getGroupId(cachedDevice),
-                isActiveLeAudioDevice(cachedDevice));
-    }
-
-    /**
-     * Check if {@link CachedBluetoothDevice} is in an audio sharing session.
-     *
-     * @param cachedDevice The cached bluetooth device to check.
-     * @param localBtManager The BT manager to provide BT functions.
-     * @return Whether the device is in an audio sharing session.
-     */
-    public static boolean hasBroadcastSource(
-            CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager) {
-        if (localBtManager == null) {
-            Log.d(TAG, "Skip check hasBroadcastSource due to bt manager is null");
-            return false;
-        }
-        LocalBluetoothLeBroadcastAssistant assistant =
-                localBtManager.getProfileManager().getLeAudioBroadcastAssistantProfile();
-        if (assistant == null) {
-            Log.d(TAG, "Skip check hasBroadcastSource due to assistant profile is null");
-            return false;
-        }
-        List<BluetoothLeBroadcastReceiveState> sourceList =
-                assistant.getAllSources(cachedDevice.getDevice());
-        if (!sourceList.isEmpty()) {
-            Log.d(
-                    TAG,
-                    "Lead device has broadcast source, device = "
-                            + cachedDevice.getDevice().getAnonymizedAddress());
-            return true;
-        }
-        // Return true if member device is in broadcast.
-        for (CachedBluetoothDevice device : cachedDevice.getMemberDevice()) {
-            List<BluetoothLeBroadcastReceiveState> list =
-                    assistant.getAllSources(device.getDevice());
-            if (!list.isEmpty()) {
-                Log.d(
-                        TAG,
-                        "Member device has broadcast source, device = "
-                                + device.getDevice().getAnonymizedAddress());
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Check if {@link CachedBluetoothDevice} is an active le audio device.
-     *
-     * @param cachedDevice The cached bluetooth device to check.
-     * @return Whether the device is an active le audio device.
-     */
-    public static boolean isActiveLeAudioDevice(CachedBluetoothDevice cachedDevice) {
-        return BluetoothUtils.isActiveLeAudioDevice(cachedDevice);
-    }
-
-    /**
-     * Retrieves the one and only active Bluetooth LE Audio sink device, regardless if the device is
-     * currently in an audio sharing session.
-     *
-     * @param manager The LocalBluetoothManager instance used to fetch connected devices.
-     * @return An Optional containing the active LE Audio device, or an empty Optional if not found.
-     */
-    public static Optional<CachedBluetoothDevice> getActiveSinkOnAssistant(
-            @Nullable LocalBluetoothManager manager) {
-        if (manager == null) {
-            Log.w(TAG, "getActiveSinksOnAssistant(): LocalBluetoothManager is null!");
-            return Optional.empty();
-        }
-        var groupedDevices = fetchConnectedDevicesByGroupId(manager);
-        var leadDevices = buildOrderedConnectedLeadDevices(manager, groupedDevices, false);
-
-        if (!leadDevices.isEmpty() && isActiveLeAudioDevice(leadDevices.get(0))) {
-            return Optional.of(leadDevices.get(0));
-        } else {
-            Log.w(TAG, "getActiveSinksOnAssistant(): No active lead device!");
-        }
-        return Optional.empty();
-    }
-
-    /** Toast message on main thread. */
-    public static void toastMessage(Context context, String message) {
-        context.getMainExecutor()
-                .execute(() -> Toast.makeText(context, message, Toast.LENGTH_LONG).show());
-    }
-
-    /** Returns if the le audio sharing is enabled. */
-    public static boolean isFeatureEnabled() {
-        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
-        return Flags.enableLeAudioSharing()
-                && adapter.isLeAudioBroadcastSourceSupported()
-                        == BluetoothStatusCodes.FEATURE_SUPPORTED
-                && adapter.isLeAudioBroadcastAssistantSupported()
-                        == BluetoothStatusCodes.FEATURE_SUPPORTED;
-    }
-
-    /** Automatically update active device if needed. */
-    public static void updateActiveDeviceIfNeeded(LocalBluetoothManager localBtManager) {
-        if (localBtManager == null) {
-            Log.d(TAG, "Skip updateActiveDeviceIfNeeded due to bt manager is null");
-            return;
-        }
-        Map<Integer, List<CachedBluetoothDevice>> groupedConnectedDevices =
-                fetchConnectedDevicesByGroupId(localBtManager);
-        List<CachedBluetoothDevice> devicesInSharing =
-                buildOrderedConnectedLeadDevices(
-                        localBtManager, groupedConnectedDevices, /* filterByInSharing= */ true);
-        if (devicesInSharing.isEmpty()) return;
-        List<BluetoothDevice> devices =
-                BluetoothAdapter.getDefaultAdapter().getMostRecentlyConnectedDevices();
-        CachedBluetoothDevice targetDevice = null;
-        // Find the earliest connected device in sharing session.
-        int targetDeviceIdx = -1;
-        for (CachedBluetoothDevice device : devicesInSharing) {
-            if (devices.contains(device.getDevice())) {
-                int idx = devices.indexOf(device.getDevice());
-                if (idx > targetDeviceIdx) {
-                    targetDeviceIdx = idx;
-                    targetDevice = device;
-                }
-            }
-        }
-        if (targetDevice != null && !isActiveLeAudioDevice(targetDevice)) {
-            Log.d(
-                    TAG,
-                    "updateActiveDeviceIfNeeded, set active device: "
-                            + targetDevice.getDevice().getAnonymizedAddress());
-            targetDevice.setActive();
-        } else {
-            Log.d(
-                    TAG,
-                    "updateActiveDeviceIfNeeded, skip set active device: "
-                            + (targetDevice == null
-                                    ? "null"
-                                    : (targetDevice.getDevice().getAnonymizedAddress()
-                                            + " is already active")));
-        }
-    }
-
-    /** Returns if the broadcast is on-going. */
-    public static boolean isBroadcasting(@Nullable LocalBluetoothManager manager) {
-        if (manager == null) return false;
-        LocalBluetoothLeBroadcast broadcast =
-                manager.getProfileManager().getLeAudioBroadcastProfile();
-        return broadcast != null && broadcast.isEnabled(null);
-    }
-
-    /** Stops the latest broadcast. */
-    public static void stopBroadcasting(LocalBluetoothManager manager) {
-        if (manager == null) {
-            Log.d(TAG, "Skip stop broadcasting due to bt manager is null");
-            return;
-        }
-        LocalBluetoothLeBroadcast broadcast =
-                manager.getProfileManager().getLeAudioBroadcastProfile();
-        if (broadcast == null) {
-            Log.d(TAG, "Skip stop broadcasting due to broadcast profile is null");
-        }
-        broadcast.stopBroadcast(broadcast.getLatestBroadcastId());
-    }
-
-    /**
-     * Get CSIP group id for {@link CachedBluetoothDevice}.
-     *
-     * <p>If CachedBluetoothDevice#getGroupId is invalid, fetch group id from
-     * LeAudioProfile#getGroupId.
-     */
-    public static int getGroupId(CachedBluetoothDevice cachedDevice) {
-        int groupId = cachedDevice.getGroupId();
-        String anonymizedAddress = cachedDevice.getDevice().getAnonymizedAddress();
-        if (groupId != BluetoothCsipSetCoordinator.GROUP_ID_INVALID) {
-            Log.d(TAG, "getGroupId by CSIP profile for device: " + anonymizedAddress);
-            return groupId;
-        }
-        for (LocalBluetoothProfile profile : cachedDevice.getProfiles()) {
-            if (profile instanceof LeAudioProfile) {
-                Log.d(TAG, "getGroupId by LEA profile for device: " + anonymizedAddress);
-                return ((LeAudioProfile) profile).getGroupId(cachedDevice.getDevice());
-            }
-        }
-        Log.d(TAG, "getGroupId return invalid id for device: " + anonymizedAddress);
-        return BluetoothCsipSetCoordinator.GROUP_ID_INVALID;
-    }
-
-    /** Get the fallback active group id from SettingsProvider. */
-    public static int getFallbackActiveGroupId(@NonNull Context context) {
-        return Settings.Secure.getInt(
-                context.getContentResolver(),
-                "bluetooth_le_broadcast_fallback_active_group_id",
-                BluetoothCsipSetCoordinator.GROUP_ID_INVALID);
-    }
-
-    /** Post the runnable to main thread. */
-    public static void postOnMainThread(@NonNull Context context, @NonNull Runnable runnable) {
-        context.getMainExecutor().execute(runnable);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsDialogFragment.java
deleted file mode 100644
index 9d346d3..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsDialogFragment.java
+++ /dev/null
@@ -1,103 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.app.Dialog;
-import android.app.settings.SettingsEnums;
-import android.os.Bundle;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-
-import java.util.ArrayList;
-
-/** Provides a dialog to choose the active device for calls and alarms. */
-public class CallsAndAlarmsDialogFragment extends InstrumentedDialogFragment {
-    private static final String TAG = "CallsAndAlarmsDialog";
-    private static final String BUNDLE_KEY_DEVICE_ITEMS = "bundle_key_device_items";
-
-    // The host creates an instance of this dialog fragment must implement this interface to receive
-    // event callbacks.
-    public interface DialogEventListener {
-        /**
-         * Called when users click the device item to set active for calls and alarms in the dialog.
-         *
-         * @param item The device item clicked.
-         */
-        void onItemClick(AudioSharingDeviceItem item);
-    }
-
-    private static DialogEventListener sListener;
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.DIALOG_AUDIO_SHARING_SWITCH_ACTIVE;
-    }
-
-    /**
-     * Display the {@link CallsAndAlarmsDialogFragment} dialog.
-     *
-     * @param host The Fragment this dialog will be hosted.
-     * @param deviceItems The connected device items in audio sharing session.
-     * @param listener The callback to handle the user action on this dialog.
-     */
-    public static void show(
-            Fragment host,
-            ArrayList<AudioSharingDeviceItem> deviceItems,
-            DialogEventListener listener) {
-        if (!AudioSharingUtils.isFeatureEnabled()) return;
-        final FragmentManager manager = host.getChildFragmentManager();
-        sListener = listener;
-        if (manager.findFragmentByTag(TAG) == null) {
-            final Bundle bundle = new Bundle();
-            bundle.putParcelableArrayList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
-            final CallsAndAlarmsDialogFragment dialog = new CallsAndAlarmsDialogFragment();
-            dialog.setArguments(bundle);
-            dialog.show(manager, TAG);
-        }
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        Bundle arguments = requireArguments();
-        ArrayList<AudioSharingDeviceItem> deviceItems =
-                arguments.getParcelableArrayList(BUNDLE_KEY_DEVICE_ITEMS);
-        int checkedItem = -1;
-        for (AudioSharingDeviceItem item : deviceItems) {
-            int fallbackActiveGroupId = AudioSharingUtils.getFallbackActiveGroupId(getContext());
-            if (item.getGroupId() == fallbackActiveGroupId) {
-                checkedItem = deviceItems.indexOf(item);
-            }
-        }
-        String[] choices =
-                deviceItems.stream().map(AudioSharingDeviceItem::getName).toArray(String[]::new);
-        AlertDialog.Builder builder =
-                new AlertDialog.Builder(getActivity())
-                        .setTitle(R.string.calls_and_alarms_device_title)
-                        .setSingleChoiceItems(
-                                choices,
-                                checkedItem,
-                                (dialog, which) -> {
-                                    sListener.onItemClick(deviceItems.get(which));
-                                });
-        return builder.create();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsPreferenceController.java
deleted file mode 100644
index 2a538d5..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsPreferenceController.java
+++ /dev/null
@@ -1,261 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothCsipSetCoordinator;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-/** PreferenceController to control the dialog to choose the active device for calls and alarms */
-public class CallsAndAlarmsPreferenceController extends AudioSharingBasePreferenceController
-        implements BluetoothCallback {
-
-    private static final String TAG = "CallsAndAlarmsPreferenceController";
-    private static final String PREF_KEY = "calls_and_alarms";
-
-    private final LocalBluetoothManager mLocalBtManager;
-    private final Executor mExecutor;
-    @Nullable private LocalBluetoothLeBroadcastAssistant mAssistant = null;
-    private DashboardFragment mFragment;
-    Map<Integer, List<CachedBluetoothDevice>> mGroupedConnectedDevices = new HashMap<>();
-    private ArrayList<AudioSharingDeviceItem> mDeviceItemsInSharingSession = new ArrayList<>();
-
-    private BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
-            new BluetoothLeBroadcastAssistant.Callback() {
-                @Override
-                public void onSearchStarted(int reason) {}
-
-                @Override
-                public void onSearchStartFailed(int reason) {}
-
-                @Override
-                public void onSearchStopped(int reason) {}
-
-                @Override
-                public void onSearchStopFailed(int reason) {}
-
-                @Override
-                public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {}
-
-                @Override
-                public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(TAG, "onSourceAdded");
-                    updatePreference();
-                }
-
-                @Override
-                public void onSourceAddFailed(
-                        @NonNull BluetoothDevice sink,
-                        @NonNull BluetoothLeBroadcastMetadata source,
-                        int reason) {}
-
-                @Override
-                public void onSourceModified(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceModifyFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onSourceRemoved(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {
-                    Log.d(TAG, "onSourceRemoved");
-                    updatePreference();
-                }
-
-                @Override
-                public void onSourceRemoveFailed(
-                        @NonNull BluetoothDevice sink, int sourceId, int reason) {}
-
-                @Override
-                public void onReceiveStateChanged(
-                        BluetoothDevice sink,
-                        int sourceId,
-                        BluetoothLeBroadcastReceiveState state) {}
-            };
-
-    public CallsAndAlarmsPreferenceController(Context context) {
-        super(context, PREF_KEY);
-        mLocalBtManager = Utils.getLocalBtManager(mContext);
-        if (mLocalBtManager != null) {
-            mAssistant = mLocalBtManager.getProfileManager().getLeAudioBroadcastAssistantProfile();
-        }
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return PREF_KEY;
-    }
-
-    @Override
-    public void displayPreference(@NonNull PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference.setOnPreferenceClickListener(
-                preference -> {
-                    if (mFragment == null) {
-                        Log.w(TAG, "Dialog fail to show due to null host.");
-                        return true;
-                    }
-                    updateDeviceItemsInSharingSession();
-                    if (mDeviceItemsInSharingSession.size() >= 1) {
-                        CallsAndAlarmsDialogFragment.show(
-                                mFragment,
-                                mDeviceItemsInSharingSession,
-                                (AudioSharingDeviceItem item) -> {
-                                    if (!mGroupedConnectedDevices.containsKey(item.getGroupId())) {
-                                        return;
-                                    }
-                                    List<CachedBluetoothDevice> devices =
-                                            mGroupedConnectedDevices.get(item.getGroupId());
-                                    @Nullable
-                                    CachedBluetoothDevice lead =
-                                            AudioSharingUtils.getLeadDevice(devices);
-                                    if (lead != null) {
-                                        Log.d(
-                                                TAG,
-                                                "Set fallback active device: "
-                                                        + lead.getDevice().getAnonymizedAddress());
-                                        lead.setActive();
-                                        updatePreference();
-                                    } else {
-                                        Log.w(
-                                                TAG,
-                                                "Fail to set fallback active device: no lead"
-                                                        + " device");
-                                    }
-                                });
-                    }
-                    return true;
-                });
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        super.onStart(owner);
-        if (mLocalBtManager != null) {
-            mLocalBtManager.getEventManager().registerCallback(this);
-        }
-        if (mAssistant != null) {
-            mAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        super.onStop(owner);
-        if (mLocalBtManager != null) {
-            mLocalBtManager.getEventManager().unregisterCallback(this);
-        }
-        if (mAssistant != null) {
-            mAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
-        }
-    }
-
-    @Override
-    public void updateVisibility() {
-        if (mPreference == null) return;
-        var unused = ThreadUtils.postOnBackgroundThread(() -> updatePreference());
-    }
-
-    private void updatePreference() {
-        boolean isVisible = isBroadcasting() && isBluetoothStateOn();
-        if (!isVisible) {
-            AudioSharingUtils.postOnMainThread(mContext, () -> mPreference.setVisible(false));
-            return;
-        }
-        updateDeviceItemsInSharingSession();
-        int fallbackActiveGroupId = AudioSharingUtils.getFallbackActiveGroupId(mContext);
-        Log.d(TAG, "updatePreference: get fallback active group " + fallbackActiveGroupId);
-        if (fallbackActiveGroupId != BluetoothCsipSetCoordinator.GROUP_ID_INVALID) {
-            for (AudioSharingDeviceItem item : mDeviceItemsInSharingSession) {
-                if (item.getGroupId() == fallbackActiveGroupId) {
-                    AudioSharingUtils.postOnMainThread(
-                            mContext,
-                            () -> {
-                                mPreference.setSummary(item.getName());
-                                mPreference.setVisible(true);
-                            });
-                    return;
-                }
-            }
-        }
-        AudioSharingUtils.postOnMainThread(
-                mContext,
-                () -> {
-                    mPreference.setSummary("No active device in sharing");
-                    mPreference.setVisible(true);
-                });
-    }
-
-    @Override
-    public void onProfileConnectionStateChanged(
-            @NonNull CachedBluetoothDevice cachedDevice,
-            @ConnectionState int state,
-            int bluetoothProfile) {
-        if (state == BluetoothAdapter.STATE_DISCONNECTED
-                && bluetoothProfile == BluetoothProfile.LE_AUDIO) {
-            // The fallback active device could be updated if the previous fallback device is
-            // disconnected.
-            updatePreference();
-        }
-    }
-
-    /**
-     * Initialize the controller.
-     *
-     * @param fragment The fragment to host the {@link CallsAndAlarmsDialogFragment} dialog.
-     */
-    public void init(DashboardFragment fragment) {
-        this.mFragment = fragment;
-    }
-
-    private void updateDeviceItemsInSharingSession() {
-        mGroupedConnectedDevices =
-                AudioSharingUtils.fetchConnectedDevicesByGroupId(mLocalBtManager);
-        mDeviceItemsInSharingSession =
-                AudioSharingUtils.buildOrderedConnectedLeadAudioSharingDeviceItem(
-                        mLocalBtManager, mGroupedConnectedDevices, /* filterByInSharing= */ true);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryController.java
deleted file mode 100644
index f62183d..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/StreamSettingsCategoryController.java
+++ /dev/null
@@ -1,98 +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 com.android.settings.connecteddevice.audiosharing;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.core.BasePreferenceController;
-
-public class StreamSettingsCategoryController extends BasePreferenceController
-        implements DefaultLifecycleObserver {
-    private static final String TAG = "StreamSettingsCategoryController";
-    private final BluetoothAdapter mBluetoothAdapter;
-    private final IntentFilter mIntentFilter;
-    private @Nullable Preference mPreference;
-    private BroadcastReceiver mReceiver =
-            new BroadcastReceiver() {
-                @Override
-                public void onReceive(Context context, Intent intent) {
-                    if (!BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) return;
-                    int adapterState =
-                            intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothDevice.ERROR);
-                    mContext.getMainExecutor()
-                            .execute(
-                                    () -> {
-                                        if (mPreference == null) {
-                                            Log.w(
-                                                    TAG,
-                                                    "Skip BT state change due to mPreference "
-                                                            + "is null");
-                                        } else {
-                                            mPreference.setVisible(
-                                                    adapterState == BluetoothAdapter.STATE_ON);
-                                        }
-                                    });
-                }
-            };
-
-    public StreamSettingsCategoryController(Context context, String key) {
-        super(context, key);
-        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
-        mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        mContext.registerReceiver(mReceiver, mIntentFilter, Context.RECEIVER_EXPORTED_UNAUDITED);
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        mContext.unregisterReceiver(mReceiver);
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference = screen.findPreference(getPreferenceKey());
-        if (mPreference != null) {
-            mPreference.setVisible(isBluetoothStateOn());
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    private boolean isBluetoothStateOn() {
-        return mBluetoothAdapter != null && mBluetoothAdapter.isEnabled();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java
deleted file mode 100644
index 47597cf..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java
+++ /dev/null
@@ -1,197 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.content.Context;
-import android.util.Log;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.R;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.utils.ThreadUtils;
-import com.android.settingslib.widget.ActionButtonsPreference;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class AudioStreamButtonController extends BasePreferenceController
-        implements DefaultLifecycleObserver {
-    private static final String TAG = "AudioStreamButtonController";
-    private static final String KEY = "audio_stream_button";
-    private final BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
-            new AudioStreamsBroadcastAssistantCallback() {
-                @Override
-                public void onSourceRemoved(BluetoothDevice sink, int sourceId, int reason) {
-                    super.onSourceRemoved(sink, sourceId, reason);
-                    updateButton();
-                }
-
-                @Override
-                public void onSourceRemoveFailed(BluetoothDevice sink, int sourceId, int reason) {
-                    super.onSourceRemoveFailed(sink, sourceId, reason);
-                    updateButton();
-                }
-
-                @Override
-                public void onReceiveStateChanged(
-                        BluetoothDevice sink,
-                        int sourceId,
-                        BluetoothLeBroadcastReceiveState state) {
-                    super.onReceiveStateChanged(sink, sourceId, state);
-                    if (mAudioStreamsHelper.isConnected(state)) {
-                        updateButton();
-                    }
-                }
-
-                @Override
-                public void onSourceAddFailed(
-                        BluetoothDevice sink, BluetoothLeBroadcastMetadata source, int reason) {
-                    super.onSourceAddFailed(sink, source, reason);
-                    updateButton();
-                }
-
-                @Override
-                public void onSourceLost(int broadcastId) {
-                    super.onSourceLost(broadcastId);
-                    updateButton();
-                }
-            };
-
-    private final AudioStreamsRepository mAudioStreamsRepository =
-            AudioStreamsRepository.getInstance();
-    private final Executor mExecutor;
-    private final AudioStreamsHelper mAudioStreamsHelper;
-    private final @Nullable LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
-    private @Nullable ActionButtonsPreference mPreference;
-    private int mBroadcastId = -1;
-
-    public AudioStreamButtonController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mExecutor = Executors.newSingleThreadExecutor();
-        mAudioStreamsHelper = new AudioStreamsHelper(Utils.getLocalBtManager(context));
-        mLeBroadcastAssistant = mAudioStreamsHelper.getLeBroadcastAssistant();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "onStart(): LeBroadcastAssistant is null!");
-            return;
-        }
-        mLeBroadcastAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "onStop(): LeBroadcastAssistant is null!");
-            return;
-        }
-        mLeBroadcastAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
-    }
-
-    @Override
-    public final void displayPreference(PreferenceScreen screen) {
-        mPreference = screen.findPreference(getPreferenceKey());
-        updateButton();
-        super.displayPreference(screen);
-    }
-
-    private void updateButton() {
-        if (mPreference != null) {
-            if (mAudioStreamsHelper.getAllConnectedSources().stream()
-                    .map(BluetoothLeBroadcastReceiveState::getBroadcastId)
-                    .anyMatch(connectedBroadcastId -> connectedBroadcastId == mBroadcastId)) {
-                ThreadUtils.postOnMainThread(
-                        () -> {
-                            if (mPreference != null) {
-                                mPreference.setButton1Enabled(true);
-                                mPreference
-                                        .setButton1Text(
-                                                R.string.bluetooth_device_context_disconnect)
-                                        .setButton1Icon(R.drawable.ic_settings_close)
-                                        .setButton1OnClickListener(
-                                                unused -> {
-                                                    if (mPreference != null) {
-                                                        mPreference.setButton1Enabled(false);
-                                                    }
-                                                    mAudioStreamsHelper.removeSource(mBroadcastId);
-                                                });
-                            }
-                        });
-            } else {
-                View.OnClickListener clickToRejoin =
-                        unused ->
-                                ThreadUtils.postOnBackgroundThread(
-                                        () -> {
-                                            var metadata =
-                                                    mAudioStreamsRepository.getSavedMetadata(
-                                                            mContext, mBroadcastId);
-                                            if (metadata != null) {
-                                                mAudioStreamsHelper.addSource(metadata);
-                                                ThreadUtils.postOnMainThread(
-                                                        () -> {
-                                                            if (mPreference != null) {
-                                                                mPreference.setButton1Enabled(
-                                                                        false);
-                                                            }
-                                                        });
-                                            }
-                                        });
-                ThreadUtils.postOnMainThread(
-                        () -> {
-                            if (mPreference != null) {
-                                mPreference.setButton1Enabled(true);
-                                mPreference
-                                        .setButton1Text(R.string.bluetooth_device_context_connect)
-                                        .setButton1Icon(R.drawable.ic_add_24dp)
-                                        .setButton1OnClickListener(clickToRejoin);
-                            }
-                        });
-            }
-        } else {
-            Log.w(TAG, "updateButton(): preference is null!");
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AVAILABLE;
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return KEY;
-    }
-
-    /** Initialize with broadcast id */
-    void init(int broadcastId) {
-        mBroadcastId = broadcastId;
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java
deleted file mode 100644
index 131c8f6..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java
+++ /dev/null
@@ -1,128 +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 com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.app.Activity;
-import android.app.Dialog;
-import android.app.settings.SettingsEnums;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.android.settings.R;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode.QrCodeScanModeFragment;
-import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt;
-
-import com.google.common.base.Strings;
-
-public class AudioStreamConfirmDialog extends InstrumentedDialogFragment {
-    public static final String KEY_BROADCAST_METADATA = "key_broadcast_metadata";
-    private static final String TAG = "AudioStreamConfirmDialog";
-    private Activity mActivity;
-    private String mBroadcastMetadataStr;
-    private BluetoothLeBroadcastMetadata mBroadcastMetadata;
-    private boolean mIsRequestValid = false;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setShowsDialog(true);
-        mActivity = getActivity();
-        if (mActivity == null) {
-            Log.w(TAG, "onCreate() mActivity is null!");
-            return;
-        }
-        mBroadcastMetadataStr =
-                mActivity.getIntent().getStringExtra(QrCodeScanModeFragment.KEY_BROADCAST_METADATA);
-        if (Strings.isNullOrEmpty(mBroadcastMetadataStr)) {
-            Log.w(TAG, "onCreate() mBroadcastMetadataStr is null or empty!");
-            return;
-        }
-        mBroadcastMetadata =
-                BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(
-                        mBroadcastMetadataStr);
-        if (mBroadcastMetadata == null) {
-            Log.w(TAG, "onCreate() mBroadcastMetadata is null!");
-        } else {
-            // Warm up LE_AUDIO_BROADCAST_ASSISTANT service
-            Utils.getLocalBluetoothManager(mActivity);
-            mIsRequestValid = true;
-        }
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        return mIsRequestValid ? getConfirmDialog() : getErrorDialog();
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        // TODO(chelseahao): update metrics id
-        return 0;
-    }
-
-    private Dialog getConfirmDialog() {
-        return new AudioStreamsDialogFragment.DialogBuilder(mActivity)
-                .setTitle("Listen to audio stream")
-                .setSubTitle1(mBroadcastMetadata.getBroadcastName())
-                .setSubTitle2(
-                        "The audio stream will play on the active LE audio device. Use this device"
-                                + " to control the volume.")
-                .setLeftButtonText("Cancel")
-                .setLeftButtonOnClickListener(
-                        unused -> {
-                            dismiss();
-                            mActivity.finish();
-                        })
-                .setRightButtonText("Listen")
-                .setRightButtonOnClickListener(
-                        unused -> {
-                            launchAudioStreamsActivity();
-                            dismiss();
-                            mActivity.finish();
-                        })
-                .build();
-    }
-
-    private Dialog getErrorDialog() {
-        return new AudioStreamsDialogFragment.DialogBuilder(mActivity)
-                .setTitle("Can't listen to audio stream")
-                .setSubTitle2("Can't play this audio stream. Learn more")
-                .setRightButtonText("Close")
-                .setRightButtonOnClickListener(
-                        unused -> {
-                            dismiss();
-                            mActivity.finish();
-                        })
-                .build();
-    }
-
-    private void launchAudioStreamsActivity() {
-        Bundle bundle = new Bundle();
-        bundle.putString(KEY_BROADCAST_METADATA, mBroadcastMetadataStr);
-
-        new SubSettingLauncher(mActivity)
-                .setTitleRes(R.string.bluetooth_find_broadcast_title)
-                .setDestination(AudioStreamsDashboardFragment.class.getName())
-                .setArguments(bundle)
-                .setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN)
-                .launch();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamDetailsFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamDetailsFragment.java
deleted file mode 100644
index e1dc228..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamDetailsFragment.java
+++ /dev/null
@@ -1,59 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.content.Context;
-import android.os.Bundle;
-
-import com.android.settings.R;
-import com.android.settings.dashboard.DashboardFragment;
-
-public class AudioStreamDetailsFragment extends DashboardFragment {
-    static final String BROADCAST_NAME_ARG = "broadcast_name";
-    static final String BROADCAST_ID_ARG = "broadcast_id";
-    private static final String TAG = "AudioStreamDetailsFragment";
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        Bundle arguments = getArguments();
-        if (arguments != null) {
-            use(AudioStreamHeaderController.class)
-                    .init(
-                            this,
-                            arguments.getString(BROADCAST_NAME_ARG),
-                            arguments.getInt(BROADCAST_ID_ARG));
-            use(AudioStreamButtonController.class).init(arguments.getInt(BROADCAST_ID_ARG));
-        }
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        // TODO(chelseahao): update metrics id
-        return 0;
-    }
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.audio_stream_details_fragment;
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java
deleted file mode 100644
index 3524543..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java
+++ /dev/null
@@ -1,171 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.R;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.widget.EntityHeaderController;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.utils.ThreadUtils;
-import com.android.settingslib.widget.LayoutPreference;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-import javax.annotation.Nullable;
-
-public class AudioStreamHeaderController extends BasePreferenceController
-        implements DefaultLifecycleObserver {
-    private static final String TAG = "AudioStreamHeaderController";
-    private static final String KEY = "audio_stream_header";
-    private final Executor mExecutor;
-    private final AudioStreamsHelper mAudioStreamsHelper;
-    @Nullable private final LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
-    private final BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
-            new AudioStreamsBroadcastAssistantCallback() {
-                @Override
-                public void onSourceRemoved(BluetoothDevice sink, int sourceId, int reason) {
-                    super.onSourceRemoved(sink, sourceId, reason);
-                    updateSummary();
-                }
-
-                @Override
-                public void onSourceLost(int broadcastId) {
-                    super.onSourceLost(broadcastId);
-                    updateSummary();
-                }
-
-                @Override
-                public void onReceiveStateChanged(
-                        BluetoothDevice sink,
-                        int sourceId,
-                        BluetoothLeBroadcastReceiveState state) {
-                    super.onReceiveStateChanged(sink, sourceId, state);
-                    if (mAudioStreamsHelper.isConnected(state)) {
-                        updateSummary();
-                    }
-                }
-            };
-
-    private @Nullable EntityHeaderController mHeaderController;
-    private @Nullable DashboardFragment mFragment;
-    private String mBroadcastName = "";
-    private int mBroadcastId = -1;
-
-    public AudioStreamHeaderController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mExecutor = Executors.newSingleThreadExecutor();
-        mAudioStreamsHelper = new AudioStreamsHelper(Utils.getLocalBtManager(context));
-        mLeBroadcastAssistant = mAudioStreamsHelper.getLeBroadcastAssistant();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "onStart(): LeBroadcastAssistant is null!");
-            return;
-        }
-        mLeBroadcastAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "onStop(): LeBroadcastAssistant is null!");
-            return;
-        }
-        mLeBroadcastAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
-    }
-
-    @Override
-    public final void displayPreference(PreferenceScreen screen) {
-        LayoutPreference headerPreference = screen.findPreference(KEY);
-        if (headerPreference != null && mFragment != null) {
-            mHeaderController =
-                    EntityHeaderController.newInstance(
-                            mFragment.getActivity(),
-                            mFragment,
-                            headerPreference.findViewById(R.id.entity_header));
-            if (mBroadcastName != null) {
-                mHeaderController.setLabel(mBroadcastName);
-            }
-            mHeaderController.setIcon(
-                    screen.getContext().getDrawable(R.drawable.ic_bt_audio_sharing));
-            screen.addPreference(headerPreference);
-            updateSummary();
-        }
-        super.displayPreference(screen);
-    }
-
-    private void updateSummary() {
-        var unused =
-                ThreadUtils.postOnBackgroundThread(
-                        () -> {
-                            var latestSummary =
-                                    mAudioStreamsHelper.getAllConnectedSources().stream()
-                                                    .map(
-                                                            BluetoothLeBroadcastReceiveState
-                                                                    ::getBroadcastId)
-                                                    .anyMatch(
-                                                            connectedBroadcastId ->
-                                                                    connectedBroadcastId
-                                                                            == mBroadcastId)
-                                            ? "Listening now"
-                                            : "";
-                            ThreadUtils.postOnMainThread(
-                                    () -> {
-                                        if (mHeaderController != null) {
-                                            mHeaderController.setSummary(latestSummary);
-                                            mHeaderController.done(true);
-                                        }
-                                    });
-                        });
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AVAILABLE;
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return KEY;
-    }
-
-    /** Initialize with {@link AudioStreamDetailsFragment} and broadcast name and id */
-    void init(
-            AudioStreamDetailsFragment audioStreamDetailsFragment,
-            String broadcastName,
-            int broadcastId) {
-        mFragment = audioStreamDetailsFragment;
-        mBroadcastName = broadcastName;
-        mBroadcastId = broadcastId;
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreference.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreference.java
deleted file mode 100644
index c2e1178..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreference.java
+++ /dev/null
@@ -1,195 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothLeAudioContentMetadata;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-
-import androidx.annotation.Nullable;
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-import com.android.settingslib.widget.TwoTargetPreference;
-
-import com.google.common.base.Strings;
-
-/**
- * Custom preference class for managing audio stream preferences with an optional lock icon. Extends
- * {@link TwoTargetPreference}.
- */
-class AudioStreamPreference extends TwoTargetPreference {
-    private boolean mIsConnected = false;
-    private AudioStream mAudioStream;
-
-    /**
-     * Update preference UI based on connection status
-     *
-     * @param isConnected Is this stream connected
-     * @param summary Summary text
-     * @param onPreferenceClickListener Click listener for the preference
-     */
-    void setIsConnected(
-            boolean isConnected,
-            String summary,
-            @Nullable OnPreferenceClickListener onPreferenceClickListener) {
-        if (mIsConnected == isConnected
-                && getSummary() == summary
-                && getOnPreferenceClickListener() == onPreferenceClickListener) {
-            // Nothing to update.
-            return;
-        }
-        mIsConnected = isConnected;
-        setSummary(summary);
-        setOnPreferenceClickListener(onPreferenceClickListener);
-        notifyChanged();
-    }
-
-    AudioStreamPreference(Context context, @Nullable AttributeSet attrs) {
-        super(context, attrs);
-        setIcon(R.drawable.ic_bt_audio_sharing);
-    }
-
-    void setAudioStreamState(AudioStreamsProgressCategoryController.AudioStreamState state) {
-        mAudioStream.setState(state);
-    }
-
-    void setAudioStreamMetadata(BluetoothLeBroadcastMetadata metadata) {
-        mAudioStream.setMetadata(metadata);
-    }
-
-    int getAudioStreamBroadcastId() {
-        return mAudioStream.getBroadcastId();
-    }
-
-    int getAudioStreamRssi() {
-        return mAudioStream.getRssi();
-    }
-
-    @Nullable
-    BluetoothLeBroadcastMetadata getAudioStreamMetadata() {
-        return mAudioStream.getMetadata();
-    }
-
-    AudioStreamsProgressCategoryController.AudioStreamState getAudioStreamState() {
-        return mAudioStream.getState();
-    }
-
-    @Override
-    protected boolean shouldHideSecondTarget() {
-        return mIsConnected;
-    }
-
-    @Override
-    protected int getSecondTargetResId() {
-        return R.layout.preference_widget_lock;
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder holder) {
-        super.onBindViewHolder(holder);
-        View divider =
-                holder.findViewById(
-                        com.android.settingslib.widget.preference.twotarget.R.id
-                                .two_target_divider);
-        if (divider != null) {
-            divider.setVisibility(View.GONE);
-        }
-    }
-
-    static AudioStreamPreference fromMetadata(
-            Context context, BluetoothLeBroadcastMetadata source) {
-        AudioStreamPreference preference = new AudioStreamPreference(context, /* attrs= */ null);
-        preference.setTitle(getBroadcastName(source));
-        preference.setAudioStream(new AudioStream(source));
-        return preference;
-    }
-
-    static AudioStreamPreference fromReceiveState(
-            Context context, BluetoothLeBroadcastReceiveState receiveState) {
-        AudioStreamPreference preference = new AudioStreamPreference(context, /* attrs= */ null);
-        preference.setTitle(getBroadcastName(receiveState));
-        preference.setAudioStream(new AudioStream(receiveState));
-        return preference;
-    }
-
-    private void setAudioStream(AudioStream audioStream) {
-        mAudioStream = audioStream;
-    }
-
-    private static String getBroadcastName(BluetoothLeBroadcastMetadata source) {
-        return source.getSubgroups().stream()
-                .map(s -> s.getContentMetadata().getProgramInfo())
-                .filter(i -> !Strings.isNullOrEmpty(i))
-                .findFirst()
-                .orElse("Broadcast Id: " + source.getBroadcastId());
-    }
-
-    private static String getBroadcastName(BluetoothLeBroadcastReceiveState state) {
-        return state.getSubgroupMetadata().stream()
-                .map(BluetoothLeAudioContentMetadata::getProgramInfo)
-                .filter(i -> !Strings.isNullOrEmpty(i))
-                .findFirst()
-                .orElse("Broadcast Id: " + state.getBroadcastId());
-    }
-
-    private static final class AudioStream {
-        private static final int UNAVAILABLE = -1;
-        @Nullable private BluetoothLeBroadcastMetadata mMetadata;
-        @Nullable private BluetoothLeBroadcastReceiveState mReceiveState;
-        private AudioStreamsProgressCategoryController.AudioStreamState mState =
-                AudioStreamsProgressCategoryController.AudioStreamState.UNKNOWN;
-
-        private AudioStream(BluetoothLeBroadcastMetadata metadata) {
-            mMetadata = metadata;
-        }
-
-        private AudioStream(BluetoothLeBroadcastReceiveState receiveState) {
-            mReceiveState = receiveState;
-        }
-
-        private int getBroadcastId() {
-            return mMetadata != null
-                    ? mMetadata.getBroadcastId()
-                    : mReceiveState != null ? mReceiveState.getBroadcastId() : UNAVAILABLE;
-        }
-
-        private int getRssi() {
-            return mMetadata != null ? mMetadata.getRssi() : Integer.MAX_VALUE;
-        }
-
-        private AudioStreamsProgressCategoryController.AudioStreamState getState() {
-            return mState;
-        }
-
-        @Nullable
-        private BluetoothLeBroadcastMetadata getMetadata() {
-            return mMetadata;
-        }
-
-        private void setState(AudioStreamsProgressCategoryController.AudioStreamState state) {
-            mState = state;
-        }
-
-        private void setMetadata(BluetoothLeBroadcastMetadata metadata) {
-            mMetadata = metadata;
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceController.java
deleted file mode 100644
index d001409..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceController.java
+++ /dev/null
@@ -1,67 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.content.Context;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.core.BasePreferenceController;
-
-public class AudioStreamsActiveDeviceController extends BasePreferenceController
-        implements AudioStreamsActiveDeviceSummaryUpdater.OnSummaryChangeListener,
-                DefaultLifecycleObserver {
-
-    public static final String KEY = "audio_streams_active_device";
-    private final AudioStreamsActiveDeviceSummaryUpdater mSummaryHelper;
-    private Preference mPreference;
-
-    public AudioStreamsActiveDeviceController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mSummaryHelper = new AudioStreamsActiveDeviceSummaryUpdater(mContext, this);
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference = screen.findPreference(KEY);
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AVAILABLE;
-    }
-
-    @Override
-    public void onSummaryChanged(String summary) {
-        mPreference.setSummary(summary);
-    }
-
-    @Override
-    public void onResume(@NonNull LifecycleOwner owner) {
-        mSummaryHelper.register(true);
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        mSummaryHelper.register(false);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdater.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdater.java
deleted file mode 100644
index b2e6fb2..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdater.java
+++ /dev/null
@@ -1,100 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.Nullable;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-public class AudioStreamsActiveDeviceSummaryUpdater implements BluetoothCallback {
-    private static final String TAG = "AudioStreamsActiveDeviceSummaryUpdater";
-    private static final boolean DEBUG = BluetoothUtils.D;
-    private final LocalBluetoothManager mBluetoothManager;
-    private String mSummary;
-    private OnSummaryChangeListener mListener;
-
-    public AudioStreamsActiveDeviceSummaryUpdater(
-            Context context, OnSummaryChangeListener listener) {
-        mBluetoothManager = Utils.getLocalBluetoothManager(context);
-        mListener = listener;
-    }
-
-    @Override
-    public void onActiveDeviceChanged(
-            @Nullable CachedBluetoothDevice activeDevice, int bluetoothProfile) {
-        if (DEBUG) {
-            Log.d(
-                    TAG,
-                    "onActiveDeviceChanged() with activeDevice : "
-                            + (activeDevice == null ? "null" : activeDevice.getAddress())
-                            + " on profile : "
-                            + bluetoothProfile);
-        }
-        if (bluetoothProfile == BluetoothProfile.LE_AUDIO) {
-            notifyChangeIfNeeded();
-        }
-    }
-
-    void register(boolean register) {
-        if (register) {
-            notifyChangeIfNeeded();
-            mBluetoothManager.getEventManager().registerCallback(this);
-        } else {
-            mBluetoothManager.getEventManager().unregisterCallback(this);
-        }
-    }
-
-    private void notifyChangeIfNeeded() {
-        ThreadUtils.postOnBackgroundThread(
-                () -> {
-                    String summary = getSummary();
-                    if (!TextUtils.equals(mSummary, summary)) {
-                        mSummary = summary;
-                        ThreadUtils.postOnMainThread(() -> mListener.onSummaryChanged(summary));
-                    }
-                });
-    }
-
-    private String getSummary() {
-        var activeSink = AudioSharingUtils.getActiveSinkOnAssistant(mBluetoothManager);
-        if (activeSink.isEmpty()) {
-            return "No active LE Audio device";
-        }
-        return activeSink.get().getName();
-    }
-
-    /** Interface definition for a callback to be invoked when the summary has been changed. */
-    interface OnSummaryChangeListener {
-        /**
-         * Called when summary has changed.
-         *
-         * @param summary The new summary.
-         */
-        void onSummaryChanged(String summary);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsBroadcastAssistantCallback.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsBroadcastAssistantCallback.java
deleted file mode 100644
index 9fb5b21..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsBroadcastAssistantCallback.java
+++ /dev/null
@@ -1,132 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.util.Log;
-
-import com.android.settingslib.bluetooth.BluetoothUtils;
-
-public class AudioStreamsBroadcastAssistantCallback
-        implements BluetoothLeBroadcastAssistant.Callback {
-
-    private static final String TAG = "AudioStreamsBroadcastAssistantCallback";
-    private static final boolean DEBUG = BluetoothUtils.D;
-
-    @Override
-    public void onReceiveStateChanged(
-            BluetoothDevice sink, int sourceId, BluetoothLeBroadcastReceiveState state) {
-        if (DEBUG) {
-            Log.d(
-                    TAG,
-                    "onReceiveStateChanged() sink : "
-                            + sink.getAddress()
-                            + " sourceId: "
-                            + sourceId
-                            + " state: "
-                            + state);
-        }
-    }
-
-    @Override
-    public void onSearchStartFailed(int reason) {
-        Log.w(TAG, "onSearchStartFailed() reason : " + reason);
-    }
-
-    @Override
-    public void onSearchStarted(int reason) {
-        if (DEBUG) {
-            Log.d(TAG, "onSearchStarted() reason : " + reason);
-        }
-    }
-
-    @Override
-    public void onSearchStopFailed(int reason) {
-        Log.w(TAG, "onSearchStopFailed() reason : " + reason);
-    }
-
-    @Override
-    public void onSearchStopped(int reason) {
-        if (DEBUG) {
-            Log.d(TAG, "onSearchStopped() reason : " + reason);
-        }
-    }
-
-    @Override
-    public void onSourceAddFailed(
-            BluetoothDevice sink, BluetoothLeBroadcastMetadata source, int reason) {
-        if (DEBUG) {
-            Log.d(
-                    TAG,
-                    "onSourceAddFailed() sink : "
-                            + sink.getAddress()
-                            + " source: "
-                            + source
-                            + " reason: "
-                            + reason);
-        }
-    }
-
-    @Override
-    public void onSourceAdded(BluetoothDevice sink, int sourceId, int reason) {
-        if (DEBUG) {
-            Log.d(
-                    TAG,
-                    "onSourceAdded() sink : "
-                            + sink.getAddress()
-                            + " sourceId: "
-                            + sourceId
-                            + " reason: "
-                            + reason);
-        }
-    }
-
-    @Override
-    public void onSourceFound(BluetoothLeBroadcastMetadata source) {
-        if (DEBUG) {
-            Log.d(TAG, "onSourceFound() broadcastId : " + source.getBroadcastId());
-        }
-    }
-
-    @Override
-    public void onSourceLost(int broadcastId) {
-        if (DEBUG) {
-            Log.d(TAG, "onSourceLost() broadcastId : " + broadcastId);
-        }
-    }
-
-    @Override
-    public void onSourceModified(BluetoothDevice sink, int sourceId, int reason) {}
-
-    @Override
-    public void onSourceModifyFailed(BluetoothDevice sink, int sourceId, int reason) {}
-
-    @Override
-    public void onSourceRemoveFailed(BluetoothDevice sink, int sourceId, int reason) {
-        Log.w(TAG, "onSourceRemoveFailed() sourceId : " + sourceId + " reason : " + reason);
-    }
-
-    @Override
-    public void onSourceRemoved(BluetoothDevice sink, int sourceId, int reason) {
-        if (DEBUG) {
-            Log.d(TAG, "onSourceRemoved() sourceId : " + sourceId + " reason : " + reason);
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java
deleted file mode 100644
index 56d0fa7..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java
+++ /dev/null
@@ -1,110 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.LifecycleOwner;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingBasePreferenceController;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
-import com.android.settings.flags.Flags;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class AudioStreamsCategoryController extends AudioSharingBasePreferenceController {
-    private static final String TAG = "AudioStreamsCategoryController";
-    private static final boolean DEBUG = BluetoothUtils.D;
-    private final LocalBluetoothManager mLocalBtManager;
-    private final Executor mExecutor;
-    private final BluetoothCallback mBluetoothCallback =
-            new BluetoothCallback() {
-                @Override
-                public void onActiveDeviceChanged(
-                        @Nullable CachedBluetoothDevice activeDevice, int bluetoothProfile) {
-                    if (bluetoothProfile == BluetoothProfile.LE_AUDIO) {
-                        updateVisibility();
-                    }
-                }
-            };
-
-    public AudioStreamsCategoryController(Context context, String key) {
-        super(context, key);
-        mLocalBtManager = Utils.getLocalBtManager(mContext);
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        super.onStart(owner);
-        if (mLocalBtManager != null) {
-            mLocalBtManager.getEventManager().registerCallback(mBluetoothCallback);
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        super.onStop(owner);
-        if (mLocalBtManager != null) {
-            mLocalBtManager.getEventManager().unregisterCallback(mBluetoothCallback);
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return Flags.enableLeAudioQrCodePrivateBroadcastSharing()
-                ? AVAILABLE
-                : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public void updateVisibility() {
-        if (mPreference == null) return;
-        mExecutor.execute(
-                () -> {
-                    boolean hasActiveLe =
-                            AudioSharingUtils.getActiveSinkOnAssistant(mLocalBtManager).isPresent();
-                    boolean isBroadcasting = isBroadcasting();
-                    boolean isBluetoothOn = isBluetoothStateOn();
-                    if (DEBUG) {
-                        Log.d(
-                                TAG,
-                                "updateVisibility() isBroadcasting : "
-                                        + isBroadcasting
-                                        + " hasActiveLe : "
-                                        + hasActiveLe
-                                        + " is BT on : "
-                                        + isBluetoothOn);
-                    }
-                    ThreadUtils.postOnMainThread(
-                            () ->
-                                    mPreference.setVisible(
-                                            isBluetoothOn && hasActiveLe && !isBroadcasting));
-                });
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java
deleted file mode 100644
index bddbb61..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java
+++ /dev/null
@@ -1,134 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsScanQrCodeController.REQUEST_SCAN_BT_BROADCAST_QR_CODE;
-
-import android.app.Activity;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.android.settings.R;
-import com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode.QrCodeScanModeFragment;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-
-import com.google.common.base.Strings;
-
-public class AudioStreamsDashboardFragment extends DashboardFragment {
-    private static final String TAG = "AudioStreamsDashboardFrag";
-    private static final boolean DEBUG = BluetoothUtils.D;
-    private AudioStreamsProgressCategoryController mAudioStreamsProgressCategoryController;
-
-    public AudioStreamsDashboardFragment() {
-        super();
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        // TODO: update category id.
-        return 0;
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    public int getHelpResource() {
-        return R.string.help_url_audio_sharing;
-    }
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.bluetooth_audio_streams;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        use(AudioStreamsScanQrCodeController.class).setFragment(this);
-        mAudioStreamsProgressCategoryController = use(AudioStreamsProgressCategoryController.class);
-        mAudioStreamsProgressCategoryController.setFragment(this);
-
-        if (getArguments() != null) {
-            String broadcastMetadataStr =
-                    getArguments().getString(AudioStreamConfirmDialog.KEY_BROADCAST_METADATA);
-            if (!Strings.isNullOrEmpty(broadcastMetadataStr)) {
-                BluetoothLeBroadcastMetadata broadcastMetadata =
-                        BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(
-                                broadcastMetadataStr);
-                if (broadcastMetadata == null) {
-                    Log.w(TAG, "onAttach() broadcastMetadata is null!");
-                } else {
-                    mAudioStreamsProgressCategoryController.setSourceFromQrCode(broadcastMetadata);
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (DEBUG) {
-            Log.d(
-                    TAG,
-                    "onActivityResult() requestCode : "
-                            + requestCode
-                            + " resultCode : "
-                            + resultCode);
-        }
-        if (requestCode == REQUEST_SCAN_BT_BROADCAST_QR_CODE) {
-            if (resultCode == Activity.RESULT_OK) {
-                String broadcastMetadata =
-                        data.getStringExtra(QrCodeScanModeFragment.KEY_BROADCAST_METADATA);
-                BluetoothLeBroadcastMetadata source =
-                        BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(
-                                broadcastMetadata);
-                if (source == null) {
-                    Log.w(TAG, "onActivityResult() source is null!");
-                    return;
-                }
-                if (DEBUG) {
-                    Log.d(TAG, "onActivityResult() broadcastId : " + source.getBroadcastId());
-                }
-                if (mAudioStreamsProgressCategoryController == null) {
-                    Log.w(
-                            TAG,
-                            "onActivityResult() AudioStreamsProgressCategoryController is null!");
-                    return;
-                }
-                mAudioStreamsProgressCategoryController.setSourceFromQrCode(source);
-            }
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragment.java
deleted file mode 100644
index c7d7f16..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragment.java
+++ /dev/null
@@ -1,151 +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 com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-
-import com.google.common.base.Strings;
-
-import java.util.function.Consumer;
-
-public class AudioStreamsDialogFragment extends InstrumentedDialogFragment {
-    private static final String TAG = "AudioStreamsDialogFragment";
-    private final DialogBuilder mDialogBuilder;
-
-    AudioStreamsDialogFragment(DialogBuilder dialogBuilder) {
-        mDialogBuilder = dialogBuilder;
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        // TODO(chelseahao): update metrics id
-        return 0;
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        return mDialogBuilder.build();
-    }
-
-    static void show(Fragment host, DialogBuilder dialogBuilder) {
-        FragmentManager manager = host.getChildFragmentManager();
-        (new AudioStreamsDialogFragment(dialogBuilder)).show(manager, TAG);
-    }
-
-    static class DialogBuilder {
-        private final Context mContext;
-        private final AlertDialog.Builder mBuilder;
-        private String mTitle;
-        private String mSubTitle1;
-        private String mSubTitle2;
-        private String mLeftButtonText;
-        private String mRightButtonText;
-        private Consumer<AlertDialog> mLeftButtonOnClickListener;
-        private Consumer<AlertDialog> mRightButtonOnClickListener;
-
-        DialogBuilder(Context context) {
-            mContext = context;
-            mBuilder = new AlertDialog.Builder(context);
-        }
-
-        DialogBuilder setTitle(String title) {
-            mTitle = title;
-            return this;
-        }
-
-        DialogBuilder setSubTitle1(String subTitle1) {
-            mSubTitle1 = subTitle1;
-            return this;
-        }
-
-        DialogBuilder setSubTitle2(String subTitle2) {
-            mSubTitle2 = subTitle2;
-            return this;
-        }
-
-        DialogBuilder setLeftButtonText(String text) {
-            mLeftButtonText = text;
-            return this;
-        }
-
-        DialogBuilder setLeftButtonOnClickListener(Consumer<AlertDialog> listener) {
-            mLeftButtonOnClickListener = listener;
-            return this;
-        }
-
-        DialogBuilder setRightButtonText(String text) {
-            mRightButtonText = text;
-            return this;
-        }
-
-        DialogBuilder setRightButtonOnClickListener(Consumer<AlertDialog> listener) {
-            mRightButtonOnClickListener = listener;
-            return this;
-        }
-
-        AlertDialog build() {
-            View rootView =
-                    LayoutInflater.from(mContext)
-                            .inflate(R.xml.bluetooth_audio_streams_dialog, /* parent= */ null);
-
-            AlertDialog dialog = mBuilder.setView(rootView).setCancelable(false).create();
-            dialog.setCanceledOnTouchOutside(false);
-
-            TextView title = rootView.requireViewById(R.id.dialog_title);
-            title.setText(mTitle);
-
-            if (!Strings.isNullOrEmpty(mSubTitle1)) {
-                TextView subTitle1 = rootView.requireViewById(R.id.dialog_subtitle);
-                subTitle1.setText(mSubTitle1);
-                subTitle1.setVisibility(View.VISIBLE);
-            }
-            if (!Strings.isNullOrEmpty(mSubTitle2)) {
-                TextView subTitle2 = rootView.requireViewById(R.id.dialog_subtitle_2);
-                subTitle2.setText(mSubTitle2);
-                subTitle2.setVisibility(View.VISIBLE);
-            }
-            if (!Strings.isNullOrEmpty(mLeftButtonText)) {
-                Button leftButton = rootView.requireViewById(R.id.left_button);
-                leftButton.setText(mLeftButtonText);
-                leftButton.setVisibility(View.VISIBLE);
-                leftButton.setOnClickListener(unused -> mLeftButtonOnClickListener.accept(dialog));
-            }
-            if (!Strings.isNullOrEmpty(mRightButtonText)) {
-                Button rightButton = rootView.requireViewById(R.id.right_button);
-                rightButton.setText(mRightButtonText);
-                rightButton.setVisibility(View.VISIBLE);
-                rightButton.setOnClickListener(
-                        unused -> mRightButtonOnClickListener.accept(dialog));
-            }
-
-            return dialog;
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java
deleted file mode 100644
index 2c6eedb..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java
+++ /dev/null
@@ -1,166 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import static java.util.Collections.emptyList;
-
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.util.Log;
-
-import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import javax.annotation.Nullable;
-
-/**
- * A helper class that adds, removes and retrieves LE broadcast sources for all active sink devices.
- */
-class AudioStreamsHelper {
-
-    private static final String TAG = "AudioStreamsHelper";
-    private static final boolean DEBUG = BluetoothUtils.D;
-
-    private final @Nullable LocalBluetoothManager mBluetoothManager;
-    private final @Nullable LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
-
-    AudioStreamsHelper(@Nullable LocalBluetoothManager bluetoothManager) {
-        mBluetoothManager = bluetoothManager;
-        mLeBroadcastAssistant = getLeBroadcastAssistant(mBluetoothManager);
-    }
-
-    /**
-     * Adds the specified LE broadcast source to all active sinks.
-     *
-     * @param source The LE broadcast metadata representing the audio source.
-     */
-    void addSource(BluetoothLeBroadcastMetadata source) {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "addSource(): LeBroadcastAssistant is null!");
-            return;
-        }
-        var unused =
-                ThreadUtils.postOnBackgroundThread(
-                        () -> {
-                            for (var sink : getActiveSinksOnAssistant(mBluetoothManager)) {
-                                if (DEBUG) {
-                                    Log.d(
-                                            TAG,
-                                            "addSource(): join broadcast broadcastId"
-                                                    + " : "
-                                                    + source.getBroadcastId()
-                                                    + " sink : "
-                                                    + sink.getAddress());
-                                }
-                                mLeBroadcastAssistant.addSource(sink, source, false);
-                            }
-                        });
-    }
-
-    /** Removes sources from LE broadcasts associated for all active sinks based on broadcast Id. */
-    void removeSource(int broadcastId) {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "removeSource(): LeBroadcastAssistant is null!");
-            return;
-        }
-        var unused =
-                ThreadUtils.postOnBackgroundThread(
-                        () -> {
-                            for (var sink : getActiveSinksOnAssistant(mBluetoothManager)) {
-                                if (DEBUG) {
-                                    Log.d(
-                                            TAG,
-                                            "removeSource(): remove all sources with broadcast id :"
-                                                    + broadcastId
-                                                    + " from sink : "
-                                                    + sink.getAddress());
-                                }
-                                mLeBroadcastAssistant.getAllSources(sink).stream()
-                                        .filter(state -> state.getBroadcastId() == broadcastId)
-                                        .forEach(
-                                                state ->
-                                                        mLeBroadcastAssistant.removeSource(
-                                                                sink, state.getSourceId()));
-                            }
-                        });
-    }
-
-    /** Retrieves a list of all LE broadcast receive states from active sinks. */
-    List<BluetoothLeBroadcastReceiveState> getAllConnectedSources() {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "getAllSources(): LeBroadcastAssistant is null!");
-            return emptyList();
-        }
-        return getActiveSinksOnAssistant(mBluetoothManager).stream()
-                .flatMap(sink -> mLeBroadcastAssistant.getAllSources(sink).stream())
-                .filter(this::isConnected)
-                .toList();
-    }
-
-    @Nullable
-    LocalBluetoothLeBroadcastAssistant getLeBroadcastAssistant() {
-        return mLeBroadcastAssistant;
-    }
-
-    boolean isConnected(BluetoothLeBroadcastReceiveState state) {
-        return state.getPaSyncState() == BluetoothLeBroadcastReceiveState.PA_SYNC_STATE_SYNCHRONIZED
-                && state.getBigEncryptionState()
-                        == BluetoothLeBroadcastReceiveState.BIG_ENCRYPTION_STATE_DECRYPTING;
-    }
-
-    private static List<BluetoothDevice> getActiveSinksOnAssistant(
-            @Nullable LocalBluetoothManager manager) {
-        if (manager == null) {
-            Log.w(TAG, "getActiveSinksOnAssistant(): LocalBluetoothManager is null!");
-            return emptyList();
-        }
-        return AudioSharingUtils.getActiveSinkOnAssistant(manager)
-                .map(
-                        cachedBluetoothDevice ->
-                                Stream.concat(
-                                                Stream.of(cachedBluetoothDevice.getDevice()),
-                                                cachedBluetoothDevice.getMemberDevice().stream()
-                                                        .map(CachedBluetoothDevice::getDevice))
-                                        .toList())
-                .orElse(emptyList());
-    }
-
-    private static @Nullable LocalBluetoothLeBroadcastAssistant getLeBroadcastAssistant(
-            @Nullable LocalBluetoothManager manager) {
-        if (manager == null) {
-            Log.w(TAG, "getLeBroadcastAssistant(): LocalBluetoothManager is null!");
-            return null;
-        }
-
-        LocalBluetoothProfileManager profileManager = manager.getProfileManager();
-        if (profileManager == null) {
-            Log.w(TAG, "getLeBroadcastAssistant(): LocalBluetoothProfileManager is null!");
-            return null;
-        }
-
-        return profileManager.getLeAudioBroadcastAssistantProfile();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java
deleted file mode 100644
index 34ffc91..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java
+++ /dev/null
@@ -1,117 +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 com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.util.Log;
-
-import java.util.Locale;
-
-public class AudioStreamsProgressCategoryCallback extends AudioStreamsBroadcastAssistantCallback {
-    private static final String TAG = "AudioStreamsProgressCategoryCallback";
-
-    private final AudioStreamsProgressCategoryController mCategoryController;
-
-    public AudioStreamsProgressCategoryCallback(
-            AudioStreamsProgressCategoryController audioStreamsProgressCategoryController) {
-        mCategoryController = audioStreamsProgressCategoryController;
-    }
-
-    @Override
-    public void onReceiveStateChanged(
-            BluetoothDevice sink, int sourceId, BluetoothLeBroadcastReceiveState state) {
-        super.onReceiveStateChanged(sink, sourceId, state);
-        mCategoryController.handleSourceConnected(state);
-    }
-
-    @Override
-    public void onSearchStartFailed(int reason) {
-        super.onSearchStartFailed(reason);
-        mCategoryController.showToast(
-                String.format(Locale.US, "Failed to start scanning, reason %d", reason));
-    }
-
-    @Override
-    public void onSearchStarted(int reason) {
-        super.onSearchStarted(reason);
-        if (mCategoryController == null) {
-            Log.w(TAG, "onSearchStarted() : mCategoryController is null!");
-            return;
-        }
-        mCategoryController.setScanning(true);
-    }
-
-    @Override
-    public void onSearchStopFailed(int reason) {
-        super.onSearchStopFailed(reason);
-        mCategoryController.showToast(
-                String.format(Locale.US, "Failed to stop scanning, reason %d", reason));
-    }
-
-    @Override
-    public void onSearchStopped(int reason) {
-        super.onSearchStopped(reason);
-        if (mCategoryController == null) {
-            Log.w(TAG, "onSearchStopped() : mCategoryController is null!");
-            return;
-        }
-        mCategoryController.setScanning(false);
-    }
-
-    @Override
-    public void onSourceAddFailed(
-            BluetoothDevice sink, BluetoothLeBroadcastMetadata source, int reason) {
-        super.onSourceAddFailed(sink, source, reason);
-        mCategoryController.showToast(
-                String.format(Locale.US, "Failed to join broadcast, reason %d", reason));
-    }
-
-    @Override
-    public void onSourceFound(BluetoothLeBroadcastMetadata source) {
-        super.onSourceFound(source);
-        if (mCategoryController == null) {
-            Log.w(TAG, "onSourceFound() : mCategoryController is null!");
-            return;
-        }
-        mCategoryController.handleSourceFound(source);
-    }
-
-    @Override
-    public void onSourceLost(int broadcastId) {
-        super.onSourceLost(broadcastId);
-        mCategoryController.handleSourceLost(broadcastId);
-    }
-
-    @Override
-    public void onSourceRemoveFailed(BluetoothDevice sink, int sourceId, int reason) {
-        super.onSourceRemoveFailed(sink, sourceId, reason);
-        mCategoryController.showToast(
-                String.format(
-                        Locale.US,
-                        "Failed to remove source %d for sink %s",
-                        sourceId,
-                        sink.getAddress()));
-    }
-
-    @Override
-    public void onSourceRemoved(BluetoothDevice sink, int sourceId, int reason) {
-        super.onSourceRemoved(sink, sourceId, reason);
-        mCategoryController.handleSourceRemoved();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
deleted file mode 100644
index c6f342a..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
+++ /dev/null
@@ -1,641 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsScanQrCodeController.REQUEST_SCAN_BT_BROADCAST_QR_CODE;
-
-import static java.util.Collections.emptyList;
-
-import android.app.AlertDialog;
-import android.app.settings.SettingsEnums;
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.CountDownTimer;
-import android.provider.Settings;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.R;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
-import com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode.QrCodeScanModeActivity;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.core.SubSettingLauncher;
-import com.android.settingslib.bluetooth.BluetoothBroadcastUtils;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-import java.nio.charset.StandardCharsets;
-import java.util.Comparator;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-import javax.annotation.Nullable;
-
-public class AudioStreamsProgressCategoryController extends BasePreferenceController
-        implements DefaultLifecycleObserver {
-    private static final String TAG = "AudioStreamsProgressCategoryController";
-    private static final boolean DEBUG = BluetoothUtils.D;
-    private final BluetoothCallback mBluetoothCallback =
-            new BluetoothCallback() {
-                @Override
-                public void onActiveDeviceChanged(
-                        @Nullable CachedBluetoothDevice activeDevice, int bluetoothProfile) {
-                    if (bluetoothProfile == BluetoothProfile.LE_AUDIO) {
-                        mExecutor.execute(() -> init(activeDevice != null));
-                    }
-                }
-            };
-
-    private final Preference.OnPreferenceClickListener mAddSourceOrShowDialog =
-            preference -> {
-                var p = (AudioStreamPreference) preference;
-                if (DEBUG) {
-                    Log.d(
-                            TAG,
-                            "preferenceClicked(): attempt to join broadcast id : "
-                                    + p.getAudioStreamBroadcastId());
-                }
-                var source = p.getAudioStreamMetadata();
-                if (source != null) {
-                    if (source.isEncrypted()) {
-                        ThreadUtils.postOnMainThread(() -> launchPasswordDialog(source, p));
-                    } else {
-                        moveToState(p, AudioStreamState.ADD_SOURCE_WAIT_FOR_RESPONSE);
-                    }
-                }
-                return true;
-            };
-
-    private final Preference.OnPreferenceClickListener mLaunchDetailFragment =
-            preference -> {
-                var p = (AudioStreamPreference) preference;
-                Bundle broadcast = new Bundle();
-                broadcast.putString(
-                        AudioStreamDetailsFragment.BROADCAST_NAME_ARG, (String) p.getTitle());
-                broadcast.putInt(
-                        AudioStreamDetailsFragment.BROADCAST_ID_ARG, p.getAudioStreamBroadcastId());
-
-                new SubSettingLauncher(mContext)
-                        .setTitleText("Audio stream details")
-                        .setDestination(AudioStreamDetailsFragment.class.getName())
-                        // TODO(chelseahao): Add logging enum
-                        .setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN)
-                        .setArguments(broadcast)
-                        .launch();
-                return true;
-            };
-
-    private final AudioStreamsRepository mAudioStreamsRepository =
-            AudioStreamsRepository.getInstance();
-
-    enum AudioStreamState {
-        UNKNOWN,
-        // When mTimedSourceFromQrCode is present and this source has not been synced.
-        WAIT_FOR_SYNC,
-        // When source has been synced but not added to any sink.
-        SYNCED,
-        // When addSource is called for this source and waiting for response.
-        ADD_SOURCE_WAIT_FOR_RESPONSE,
-        // Source is added to active sink.
-        SOURCE_ADDED,
-    }
-
-    private final Comparator<AudioStreamPreference> mComparator =
-            Comparator.<AudioStreamPreference, Boolean>comparing(
-                            p ->
-                                    p.getAudioStreamState()
-                                            == AudioStreamsProgressCategoryController
-                                                    .AudioStreamState.SOURCE_ADDED)
-                    .thenComparingInt(AudioStreamPreference::getAudioStreamRssi)
-                    .reversed();
-
-    private final Executor mExecutor;
-    private final AudioStreamsProgressCategoryCallback mBroadcastAssistantCallback;
-    private final AudioStreamsHelper mAudioStreamsHelper;
-    private final @Nullable LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
-    private final @Nullable LocalBluetoothManager mBluetoothManager;
-    private final ConcurrentHashMap<Integer, AudioStreamPreference> mBroadcastIdToPreferenceMap =
-            new ConcurrentHashMap<>();
-    private @Nullable TimedSourceFromQrCode mTimedSourceFromQrCode;
-    private AudioStreamsProgressCategoryPreference mCategoryPreference;
-    private AudioStreamsDashboardFragment mFragment;
-
-    public AudioStreamsProgressCategoryController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mExecutor = Executors.newSingleThreadExecutor();
-        mBluetoothManager = Utils.getLocalBtManager(mContext);
-        mAudioStreamsHelper = new AudioStreamsHelper(mBluetoothManager);
-        mLeBroadcastAssistant = mAudioStreamsHelper.getLeBroadcastAssistant();
-        mBroadcastAssistantCallback = new AudioStreamsProgressCategoryCallback(this);
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AVAILABLE;
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mCategoryPreference = screen.findPreference(getPreferenceKey());
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mBluetoothManager != null) {
-            mBluetoothManager.getEventManager().registerCallback(mBluetoothCallback);
-        }
-        mExecutor.execute(
-                () -> {
-                    boolean hasActive =
-                            AudioSharingUtils.getActiveSinkOnAssistant(mBluetoothManager)
-                                    .isPresent();
-                    init(hasActive);
-                });
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mBluetoothManager != null) {
-            mBluetoothManager.getEventManager().unregisterCallback(mBluetoothCallback);
-        }
-        mExecutor.execute(this::stopScanning);
-    }
-
-    void setFragment(AudioStreamsDashboardFragment fragment) {
-        mFragment = fragment;
-    }
-
-    void setSourceFromQrCode(BluetoothLeBroadcastMetadata source) {
-        mTimedSourceFromQrCode =
-                new TimedSourceFromQrCode(source, () -> handleSourceLost(source.getBroadcastId()));
-    }
-
-    void setScanning(boolean isScanning) {
-        ThreadUtils.postOnMainThread(
-                () -> {
-                    if (mCategoryPreference != null) mCategoryPreference.setProgress(isScanning);
-                });
-    }
-
-    void handleSourceFound(BluetoothLeBroadcastMetadata source) {
-        var broadcastIdFound = source.getBroadcastId();
-        mBroadcastIdToPreferenceMap.compute(
-                broadcastIdFound,
-                (k, v) -> {
-                    if (v == null) {
-                        // No existing preference for this source founded, add one and set initial
-                        // state to SYNCED.
-                        return addNewPreference(source, AudioStreamState.SYNCED);
-                    }
-                    var fromState = v.getAudioStreamState();
-                    if (fromState == AudioStreamState.WAIT_FOR_SYNC
-                            && mTimedSourceFromQrCode != null) {
-                        var pendingSource = mTimedSourceFromQrCode.get();
-                        if (pendingSource == null) {
-                            Log.w(
-                                    TAG,
-                                    "handleSourceFound(): unexpected state with null pendingSource:"
-                                            + fromState
-                                            + " for broadcastId : "
-                                            + broadcastIdFound);
-                            v.setAudioStreamMetadata(source);
-                            moveToState(v, AudioStreamState.SYNCED);
-                            return v;
-                        }
-                        // A preference with source founded is existed from a QR code scan. As the
-                        // source is now synced, we update the preference with pendingSource from QR
-                        // code scan and add source with it (since it has the password).
-                        v.setAudioStreamMetadata(pendingSource);
-                        moveToState(v, AudioStreamState.ADD_SOURCE_WAIT_FOR_RESPONSE);
-                    } else {
-                        // A preference with source founded existed either because it's already
-                        // connected (SOURCE_ADDED), or other unexpected reason. We update the
-                        // preference with this source and won't change it's state.
-                        v.setAudioStreamMetadata(source);
-                        if (fromState != AudioStreamState.SOURCE_ADDED) {
-                            Log.w(
-                                    TAG,
-                                    "handleSourceFound(): unexpected state : "
-                                            + fromState
-                                            + " for broadcastId : "
-                                            + broadcastIdFound);
-                        }
-                    }
-                    return v;
-                });
-    }
-
-    private void handleSourceFromQrCodeIfExists() {
-        if (mTimedSourceFromQrCode == null || mTimedSourceFromQrCode.get() == null) {
-            return;
-        }
-        var metadataFromQrCode = mTimedSourceFromQrCode.get();
-        mBroadcastIdToPreferenceMap.compute(
-                metadataFromQrCode.getBroadcastId(),
-                (k, v) -> {
-                    if (v == null) {
-                        // No existing preference for this source from the QR code scan, add one and
-                        // set initial state to WAIT_FOR_SYNC.
-                        return addNewPreference(metadataFromQrCode, AudioStreamState.WAIT_FOR_SYNC);
-                    }
-                    var fromState = v.getAudioStreamState();
-                    if (fromState == AudioStreamState.SYNCED) {
-                        // A preference with source from the QR code is existed because it has been
-                        // founded during scanning, now we have the password, we can add source.
-                        v.setAudioStreamMetadata(metadataFromQrCode);
-                        moveToState(v, AudioStreamState.ADD_SOURCE_WAIT_FOR_RESPONSE);
-                    } else {
-                        v.setAudioStreamMetadata(metadataFromQrCode);
-                        Log.w(
-                                TAG,
-                                "handleSourceFromQrCode(): unexpected state : "
-                                        + fromState
-                                        + " for broadcastId : "
-                                        + metadataFromQrCode.getBroadcastId());
-                    }
-                    return v;
-                });
-    }
-
-    void handleSourceLost(int broadcastId) {
-        var toRemove = mBroadcastIdToPreferenceMap.remove(broadcastId);
-        if (toRemove != null) {
-            ThreadUtils.postOnMainThread(
-                    () -> {
-                        if (mCategoryPreference != null) {
-                            mCategoryPreference.removePreference(toRemove);
-                        }
-                    });
-        }
-        mAudioStreamsHelper.removeSource(broadcastId);
-    }
-
-    void handleSourceRemoved() {
-        for (var entry : mBroadcastIdToPreferenceMap.entrySet()) {
-            var preference = entry.getValue();
-
-            // Look for preference has SOURCE_ADDED state, re-check if they are still connected. If
-            // not, means the source is removed from the sink, we move back the preference to SYNCED
-            // state.
-            if (preference.getAudioStreamState() == AudioStreamState.SOURCE_ADDED
-                    && mAudioStreamsHelper.getAllConnectedSources().stream()
-                            .noneMatch(
-                                    connected ->
-                                            connected.getBroadcastId()
-                                                    == preference.getAudioStreamBroadcastId())) {
-
-                ThreadUtils.postOnMainThread(
-                        () -> {
-                            var metadata = preference.getAudioStreamMetadata();
-
-                            if (metadata != null) {
-                                moveToState(preference, AudioStreamState.SYNCED);
-                            } else {
-                                handleSourceLost(preference.getAudioStreamBroadcastId());
-                            }
-                        });
-
-                return;
-            }
-        }
-    }
-
-    void handleSourceConnected(BluetoothLeBroadcastReceiveState receiveState) {
-        if (!mAudioStreamsHelper.isConnected(receiveState)) {
-            return;
-        }
-        var broadcastIdConnected = receiveState.getBroadcastId();
-        mBroadcastIdToPreferenceMap.compute(
-                broadcastIdConnected,
-                (k, v) -> {
-                    if (v == null) {
-                        // No existing preference for this source even if it's already connected,
-                        // add one and set initial state to SOURCE_ADDED. This could happen because
-                        // we retrieves the connected source during onStart() from
-                        // AudioStreamsHelper#getAllConnectedSources() even before the source is
-                        // founded by scanning.
-                        return addNewPreference(receiveState, AudioStreamState.SOURCE_ADDED);
-                    }
-                    var fromState = v.getAudioStreamState();
-                    if (fromState == AudioStreamState.ADD_SOURCE_WAIT_FOR_RESPONSE
-                            || fromState == AudioStreamState.SYNCED
-                            || fromState == AudioStreamState.WAIT_FOR_SYNC
-                            || fromState == AudioStreamState.SOURCE_ADDED) {
-                        // Expected state, do nothing
-                    } else {
-                        Log.w(
-                                TAG,
-                                "handleSourceConnected(): unexpected state : "
-                                        + fromState
-                                        + " for broadcastId : "
-                                        + broadcastIdConnected);
-                    }
-                    moveToState(v, AudioStreamState.SOURCE_ADDED);
-                    return v;
-                });
-    }
-
-    void showToast(String msg) {
-        AudioSharingUtils.toastMessage(mContext, msg);
-    }
-
-    private void init(boolean hasActive) {
-        mBroadcastIdToPreferenceMap.clear();
-        ThreadUtils.postOnMainThread(
-                () -> {
-                    if (mCategoryPreference != null) {
-                        mCategoryPreference.removeAudioStreamPreferences();
-                        mCategoryPreference.setVisible(hasActive);
-                    }
-                });
-        if (hasActive) {
-            startScanning();
-        } else {
-            stopScanning();
-            ThreadUtils.postOnMainThread(
-                    () -> AudioStreamsDialogFragment.show(mFragment, getNoLeDeviceDialog()));
-        }
-    }
-
-    private void startScanning() {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "startScanning(): LeBroadcastAssistant is null!");
-            return;
-        }
-        if (mLeBroadcastAssistant.isSearchInProgress()) {
-            showToast("Failed to start scanning, please try again.");
-            return;
-        }
-        if (DEBUG) {
-            Log.d(TAG, "startScanning()");
-        }
-        mLeBroadcastAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
-
-        // Handle QR code scan and display currently connected streams
-        var unused =
-                ThreadUtils.postOnBackgroundThread(
-                        () -> {
-                            handleSourceFromQrCodeIfExists();
-                            mAudioStreamsHelper
-                                    .getAllConnectedSources()
-                                    .forEach(this::handleSourceConnected);
-                            mLeBroadcastAssistant.startSearchingForSources(emptyList());
-                        });
-    }
-
-    private void stopScanning() {
-        if (mLeBroadcastAssistant == null) {
-            Log.w(TAG, "stopScanning(): LeBroadcastAssistant is null!");
-            return;
-        }
-        if (mLeBroadcastAssistant.isSearchInProgress()) {
-            if (DEBUG) {
-                Log.d(TAG, "stopScanning()");
-            }
-            mLeBroadcastAssistant.stopSearchingForSources();
-        }
-        mLeBroadcastAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
-        if (mTimedSourceFromQrCode != null) {
-            mTimedSourceFromQrCode.cleanup();
-            mTimedSourceFromQrCode = null;
-        }
-    }
-
-    private AudioStreamPreference addNewPreference(
-            BluetoothLeBroadcastReceiveState receiveState, AudioStreamState state) {
-        var preference = AudioStreamPreference.fromReceiveState(mContext, receiveState);
-        moveToState(preference, state);
-        return preference;
-    }
-
-    private AudioStreamPreference addNewPreference(
-            BluetoothLeBroadcastMetadata metadata, AudioStreamState state) {
-        var preference = AudioStreamPreference.fromMetadata(mContext, metadata);
-        moveToState(preference, state);
-        return preference;
-    }
-
-    private void moveToState(AudioStreamPreference preference, AudioStreamState state) {
-        if (preference.getAudioStreamState() == state) {
-            return;
-        }
-        preference.setAudioStreamState(state);
-
-        // Perform action according to the new state
-        if (state == AudioStreamState.ADD_SOURCE_WAIT_FOR_RESPONSE) {
-            if (mTimedSourceFromQrCode != null) {
-                mTimedSourceFromQrCode.consumed(preference.getAudioStreamBroadcastId());
-            }
-            var metadata = preference.getAudioStreamMetadata();
-            if (metadata != null) {
-                mAudioStreamsHelper.addSource(metadata);
-                // Cache the metadata that used for add source, if source is added successfully, we
-                // will save it persistently.
-                mAudioStreamsRepository.cacheMetadata(metadata);
-            }
-        } else if (state == AudioStreamState.SOURCE_ADDED) {
-            if (mTimedSourceFromQrCode != null) {
-                mTimedSourceFromQrCode.consumed(preference.getAudioStreamBroadcastId());
-            }
-            // Saved connected metadata for user to re-join this broadcast later.
-            var cached =
-                    mAudioStreamsRepository.getCachedMetadata(
-                            preference.getAudioStreamBroadcastId());
-            if (cached != null) {
-                mAudioStreamsRepository.saveMetadata(mContext, cached);
-            }
-        } else if (state == AudioStreamState.WAIT_FOR_SYNC) {
-            if (mTimedSourceFromQrCode != null) {
-                mTimedSourceFromQrCode.waitForConsume();
-            }
-        }
-
-        // Get preference click listener according to the new state
-        Preference.OnPreferenceClickListener listener;
-        if (state == AudioStreamState.SYNCED) {
-            listener = mAddSourceOrShowDialog;
-        } else if (state == AudioStreamState.SOURCE_ADDED) {
-            listener = mLaunchDetailFragment;
-        } else {
-            listener = null;
-        }
-
-        // Get preference summary according to the new state
-        String summary;
-        if (state == AudioStreamState.WAIT_FOR_SYNC) {
-            summary = "Scanning...";
-        } else if (state == AudioStreamState.ADD_SOURCE_WAIT_FOR_RESPONSE) {
-            summary = "Connecting...";
-        } else if (state == AudioStreamState.SOURCE_ADDED) {
-            summary = "Listening now";
-        } else {
-            summary = "";
-        }
-
-        // Update UI
-        ThreadUtils.postOnMainThread(
-                () -> {
-                    preference.setIsConnected(
-                            state == AudioStreamState.SOURCE_ADDED, summary, listener);
-                    if (mCategoryPreference != null) {
-                        mCategoryPreference.addAudioStreamPreference(preference, mComparator);
-                    }
-                });
-    }
-
-    private void launchPasswordDialog(
-            BluetoothLeBroadcastMetadata source, AudioStreamPreference preference) {
-        View layout =
-                LayoutInflater.from(mContext)
-                        .inflate(R.layout.bluetooth_find_broadcast_password_dialog, null);
-        ((TextView) layout.requireViewById(R.id.broadcast_name_text))
-                .setText(preference.getTitle());
-        AlertDialog alertDialog =
-                new AlertDialog.Builder(mContext)
-                        .setTitle(R.string.find_broadcast_password_dialog_title)
-                        .setView(layout)
-                        .setNeutralButton(android.R.string.cancel, null)
-                        .setPositiveButton(
-                                R.string.bluetooth_connect_access_dialog_positive,
-                                (dialog, which) -> {
-                                    var code =
-                                            ((EditText)
-                                                            layout.requireViewById(
-                                                                    R.id.broadcast_edit_text))
-                                                    .getText()
-                                                    .toString();
-                                    var metadata =
-                                            new BluetoothLeBroadcastMetadata.Builder(source)
-                                                    .setBroadcastCode(
-                                                            code.getBytes(StandardCharsets.UTF_8))
-                                                    .build();
-                                    // Update the metadata after user entered the password
-                                    preference.setAudioStreamMetadata(metadata);
-                                    moveToState(
-                                            preference,
-                                            AudioStreamState.ADD_SOURCE_WAIT_FOR_RESPONSE);
-                                })
-                        .create();
-        alertDialog.show();
-    }
-
-    private AudioStreamsDialogFragment.DialogBuilder getNoLeDeviceDialog() {
-        return new AudioStreamsDialogFragment.DialogBuilder(mContext)
-                .setTitle("Connect compatible headphones")
-                .setSubTitle2(
-                        "To listen to an audio stream, first connect headphones that support LE"
-                                + " Audio to this device. Learn more")
-                .setLeftButtonText("Close")
-                .setLeftButtonOnClickListener(AlertDialog::dismiss)
-                .setRightButtonText("Connect a device")
-                .setRightButtonOnClickListener(
-                        dialog -> {
-                            mContext.startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
-                            dialog.dismiss();
-                        });
-    }
-
-    private AudioStreamsDialogFragment.DialogBuilder getBroadcastUnavailableDialog(
-            String broadcastName) {
-        return new AudioStreamsDialogFragment.DialogBuilder(mContext)
-                .setTitle("Audio stream isn't available")
-                .setSubTitle1(broadcastName)
-                .setSubTitle2("This audio stream isn't playing anything right now")
-                .setLeftButtonText("Close")
-                .setLeftButtonOnClickListener(AlertDialog::dismiss)
-                .setRightButtonText("Retry")
-                .setRightButtonOnClickListener(
-                        dialog -> {
-                            if (mFragment != null) {
-                                Intent intent = new Intent(mContext, QrCodeScanModeActivity.class);
-                                intent.setAction(
-                                        BluetoothBroadcastUtils
-                                                .ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER);
-                                mFragment.startActivityForResult(
-                                        intent, REQUEST_SCAN_BT_BROADCAST_QR_CODE);
-                                dialog.dismiss();
-                            }
-                        });
-    }
-
-    private class TimedSourceFromQrCode {
-        private static final int WAIT_FOR_SYNC_TIMEOUT_MILLIS = 15000;
-        private final CountDownTimer mTimer;
-        private BluetoothLeBroadcastMetadata mSourceFromQrCode;
-
-        private TimedSourceFromQrCode(
-                BluetoothLeBroadcastMetadata sourceFromQrCode, Runnable timeoutAction) {
-            mSourceFromQrCode = sourceFromQrCode;
-            mTimer =
-                    new CountDownTimer(WAIT_FOR_SYNC_TIMEOUT_MILLIS, 1000) {
-                        @Override
-                        public void onTick(long millisUntilFinished) {}
-
-                        @Override
-                        public void onFinish() {
-                            timeoutAction.run();
-                            ThreadUtils.postOnMainThread(
-                                    () ->
-                                            AudioStreamsDialogFragment.show(
-                                                    mFragment,
-                                                    getBroadcastUnavailableDialog(
-                                                            sourceFromQrCode.getBroadcastName())));
-                        }
-                    };
-        }
-
-        private void waitForConsume() {
-            mTimer.start();
-        }
-
-        private void cleanup() {
-            mTimer.cancel();
-            mSourceFromQrCode = null;
-        }
-
-        private void consumed(int broadcastId) {
-            if (mSourceFromQrCode == null || broadcastId != mSourceFromQrCode.getBroadcastId()) {
-                return;
-            }
-            cleanup();
-        }
-
-        private BluetoothLeBroadcastMetadata get() {
-            return mSourceFromQrCode;
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryPreference.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryPreference.java
deleted file mode 100644
index 33adc31..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryPreference.java
+++ /dev/null
@@ -1,89 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.content.Context;
-import android.util.AttributeSet;
-
-import androidx.annotation.NonNull;
-
-import com.android.settings.ProgressCategory;
-import com.android.settings.R;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-
-public class AudioStreamsProgressCategoryPreference extends ProgressCategory {
-
-    public AudioStreamsProgressCategoryPreference(Context context) {
-        super(context);
-        init();
-    }
-
-    public AudioStreamsProgressCategoryPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        init();
-    }
-
-    public AudioStreamsProgressCategoryPreference(
-            Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        init();
-    }
-
-    public AudioStreamsProgressCategoryPreference(
-            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        init();
-    }
-
-    void addAudioStreamPreference(
-            @NonNull AudioStreamPreference preference,
-            Comparator<AudioStreamPreference> comparator) {
-        super.addPreference(preference);
-
-        List<AudioStreamPreference> preferences = getAllAudioStreamPreferences();
-        preferences.sort(comparator);
-        for (int i = 0; i < preferences.size(); i++) {
-            // setOrder to i + 1, since the order 0 preference should always be the
-            // "audio_streams_scan_qr_code"
-            preferences.get(i).setOrder(i + 1);
-        }
-    }
-
-    void removeAudioStreamPreferences() {
-        List<AudioStreamPreference> streams = getAllAudioStreamPreferences();
-        for (var toRemove : streams) {
-            removePreference(toRemove);
-        }
-    }
-
-    private List<AudioStreamPreference> getAllAudioStreamPreferences() {
-        List<AudioStreamPreference> streams = new ArrayList<>();
-        for (int i = 0; i < getPreferenceCount(); i++) {
-            if (getPreference(i) instanceof AudioStreamPreference) {
-                streams.add((AudioStreamPreference) getPreference(i));
-            }
-        }
-        return streams;
-    }
-
-    private void init() {
-        setEmptyTextRes(R.string.audio_streams_empty);
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeFragment.java
deleted file mode 100644
index 2366e70..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeFragment.java
+++ /dev/null
@@ -1,124 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-
-import com.android.settings.R;
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.core.InstrumentedFragment;
-import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.qrcode.QrCodeGenerator;
-
-import com.google.zxing.WriterException;
-
-import java.nio.charset.StandardCharsets;
-import java.util.Optional;
-
-public class AudioStreamsQrCodeFragment extends InstrumentedFragment {
-    private static final String TAG = "AudioStreamsQrCodeFragment";
-
-    @Override
-    public int getMetricsCategory() {
-        // TODO(chelseahao): update metrics id
-        return 0;
-    }
-
-    @Override
-    public final View onCreateView(
-            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        View view = inflater.inflate(R.xml.bluetooth_audio_streams_qr_code, container, false);
-
-        BluetoothLeBroadcastMetadata broadcastMetadata = getBroadcastMetadata();
-
-        if (broadcastMetadata != null) {
-            getQrCodeBitmap(broadcastMetadata)
-                    .ifPresent(
-                            bm -> {
-                                ((ImageView) view.requireViewById(R.id.qrcode_view))
-                                        .setImageBitmap(bm);
-                                ((TextView) view.requireViewById(R.id.password))
-                                        .setText(
-                                                "Password: "
-                                                        + new String(
-                                                                broadcastMetadata
-                                                                        .getBroadcastCode(),
-                                                                StandardCharsets.UTF_8));
-                            });
-        }
-        return view;
-    }
-
-    private Optional<Bitmap> getQrCodeBitmap(@Nullable BluetoothLeBroadcastMetadata metadata) {
-        if (metadata == null) {
-            Log.d(TAG, "onCreateView: broadcastMetadata is empty!");
-            return Optional.empty();
-        }
-        String metadataStr = BluetoothLeBroadcastMetadataExt.INSTANCE.toQrCodeString(metadata);
-        if (metadataStr.isEmpty()) {
-            Log.d(TAG, "onCreateView: metadataStr is empty!");
-            return Optional.empty();
-        }
-        Log.d("chelsea", metadataStr);
-        try {
-            int qrcodeSize = getContext().getResources().getDimensionPixelSize(R.dimen.qrcode_size);
-            Bitmap bitmap = QrCodeGenerator.encodeQrCode(metadataStr, qrcodeSize);
-            return Optional.of(bitmap);
-        } catch (WriterException e) {
-            Log.d(
-                    TAG,
-                    "onCreateView: broadcastMetadata "
-                            + metadata
-                            + " qrCode generation exception "
-                            + e);
-        }
-
-        return Optional.empty();
-    }
-
-    @Nullable
-    private BluetoothLeBroadcastMetadata getBroadcastMetadata() {
-        LocalBluetoothLeBroadcast localBluetoothLeBroadcast =
-                Utils.getLocalBtManager(getActivity())
-                        .getProfileManager()
-                        .getLeAudioBroadcastProfile();
-        if (localBluetoothLeBroadcast == null) {
-            Log.d(TAG, "getBroadcastMetadataQrCode: localBluetoothLeBroadcast is null!");
-            return null;
-        }
-
-        BluetoothLeBroadcastMetadata metadata =
-                localBluetoothLeBroadcast.getLatestBluetoothLeBroadcastMetadata();
-        if (metadata == null) {
-            Log.d(TAG, "getBroadcastMetadataQrCode: metadata is null!");
-            return null;
-        }
-
-        return metadata;
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsRepository.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsRepository.java
deleted file mode 100644
index 65245ac..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsRepository.java
+++ /dev/null
@@ -1,160 +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 com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothLeBroadcastMetadata;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.util.Log;
-
-import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.utils.ThreadUtils;
-
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.annotation.Nullable;
-
-/** Manages the caching and storage of Bluetooth audio stream metadata. */
-public class AudioStreamsRepository {
-
-    private static final String TAG = "AudioStreamsRepository";
-    private static final boolean DEBUG = BluetoothUtils.D;
-
-    private static final String PREF_KEY = "bluetooth_audio_stream_pref";
-    private static final String METADATA_KEY = "bluetooth_audio_stream_metadata";
-
-    @Nullable
-    private static AudioStreamsRepository sInstance = null;
-
-    private AudioStreamsRepository() {}
-
-    /**
-     * Gets the single instance of AudioStreamsRepository.
-     *
-     * @return The AudioStreamsRepository instance.
-     */
-    public static synchronized AudioStreamsRepository getInstance() {
-        if (sInstance == null) {
-            sInstance = new AudioStreamsRepository();
-        }
-        return sInstance;
-    }
-
-    private final ConcurrentHashMap<Integer, BluetoothLeBroadcastMetadata>
-            mBroadcastIdToMetadataCacheMap = new ConcurrentHashMap<>();
-
-    /**
-     * Caches BluetoothLeBroadcastMetadata in a local cache.
-     *
-     * @param metadata The BluetoothLeBroadcastMetadata to be cached.
-     */
-    void cacheMetadata(BluetoothLeBroadcastMetadata metadata) {
-        if (DEBUG) {
-            Log.d(
-                    TAG,
-                    "cacheMetadata(): broadcastId "
-                            + metadata.getBroadcastId()
-                            + " saved in local cache.");
-        }
-        mBroadcastIdToMetadataCacheMap.put(metadata.getBroadcastId(), metadata);
-    }
-
-    /**
-     * Gets cached BluetoothLeBroadcastMetadata by broadcastId.
-     *
-     * @param broadcastId The broadcastId to look up in the cache.
-     * @return The cached BluetoothLeBroadcastMetadata or null if not found.
-     */
-    @Nullable
-    BluetoothLeBroadcastMetadata getCachedMetadata(int broadcastId) {
-        var metadata = mBroadcastIdToMetadataCacheMap.get(broadcastId);
-        if (metadata == null) {
-            Log.w(
-                    TAG,
-                    "getCachedMetadata(): broadcastId not found in"
-                            + " mBroadcastIdToMetadataCacheMap.");
-            return null;
-        }
-        return metadata;
-    }
-
-    /**
-     * Saves metadata to SharedPreferences asynchronously.
-     *
-     * @param context The context.
-     * @param metadata The BluetoothLeBroadcastMetadata to be saved.
-     */
-    void saveMetadata(Context context, BluetoothLeBroadcastMetadata metadata) {
-        var unused =
-                ThreadUtils.postOnBackgroundThread(
-                        () -> {
-                            SharedPreferences sharedPref =
-                                    context.getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE);
-                            if (sharedPref != null) {
-                                SharedPreferences.Editor editor = sharedPref.edit();
-                                editor.putString(
-                                        METADATA_KEY,
-                                        BluetoothLeBroadcastMetadataExt.INSTANCE.toQrCodeString(
-                                                metadata));
-                                editor.apply();
-                                if (DEBUG) {
-                                    Log.d(
-                                            TAG,
-                                            "saveMetadata(): broadcastId "
-                                                    + metadata.getBroadcastId()
-                                                    + " metadata saved in storage.");
-                                }
-                            }
-                        });
-    }
-
-    /**
-     * Gets saved metadata from SharedPreferences.
-     *
-     * @param context The context.
-     * @param broadcastId The broadcastId to retrieve metadata for.
-     * @return The saved BluetoothLeBroadcastMetadata or null if not found.
-     */
-    @Nullable
-    BluetoothLeBroadcastMetadata getSavedMetadata(Context context, int broadcastId) {
-        SharedPreferences sharedPref = context.getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE);
-        if (sharedPref != null) {
-            String savedMetadataStr = sharedPref.getString(METADATA_KEY, null);
-            if (savedMetadataStr == null) {
-                Log.w(TAG, "getSavedMetadata(): savedMetadataStr is null");
-                return null;
-            }
-            var savedMetadata =
-                    BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(
-                            savedMetadataStr);
-            if (savedMetadata == null || savedMetadata.getBroadcastId() != broadcastId) {
-                Log.w(TAG, "getSavedMetadata(): savedMetadata doesn't match broadcast Id.");
-                return null;
-            }
-            if (DEBUG) {
-                Log.d(
-                        TAG,
-                        "getSavedMetadata(): broadcastId "
-                                + savedMetadata.getBroadcastId()
-                                + " metadata found in storage.");
-            }
-            return savedMetadata;
-        }
-        return null;
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java
deleted file mode 100644
index 24e1ca3..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java
+++ /dev/null
@@ -1,132 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams;
-
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.DefaultLifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
-import com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode.QrCodeScanModeActivity;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.bluetooth.BluetoothBroadcastUtils;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.utils.ThreadUtils;
-
-public class AudioStreamsScanQrCodeController extends BasePreferenceController
-        implements DefaultLifecycleObserver {
-    static final int REQUEST_SCAN_BT_BROADCAST_QR_CODE = 0;
-    private static final String TAG = "AudioStreamsProgressCategoryController";
-    private static final boolean DEBUG = BluetoothUtils.D;
-    private static final String KEY = "audio_streams_scan_qr_code";
-    private final BluetoothCallback mBluetoothCallback =
-            new BluetoothCallback() {
-                @Override
-                public void onActiveDeviceChanged(
-                        @Nullable CachedBluetoothDevice activeDevice, int bluetoothProfile) {
-                    if (bluetoothProfile == BluetoothProfile.LE_AUDIO) {
-                        updateVisibility();
-                    }
-                }
-            };
-
-    private final LocalBluetoothManager mLocalBtManager;
-    private AudioStreamsDashboardFragment mFragment;
-    private Preference mPreference;
-
-    public AudioStreamsScanQrCodeController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-        mLocalBtManager = Utils.getLocalBtManager(mContext);
-    }
-
-    public void setFragment(AudioStreamsDashboardFragment fragment) {
-        mFragment = fragment;
-    }
-
-    @Override
-    public void onStart(@NonNull LifecycleOwner owner) {
-        if (mLocalBtManager != null) {
-            mLocalBtManager.getEventManager().registerCallback(mBluetoothCallback);
-        }
-    }
-
-    @Override
-    public void onStop(@NonNull LifecycleOwner owner) {
-        if (mLocalBtManager != null) {
-            mLocalBtManager.getEventManager().unregisterCallback(mBluetoothCallback);
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return AVAILABLE;
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return KEY;
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mPreference = screen.findPreference(getPreferenceKey());
-        if (mPreference == null) {
-            Log.w(TAG, "displayPreference() mPreference is null!");
-            return;
-        }
-        mPreference.setOnPreferenceClickListener(
-                preference -> {
-                    if (mFragment == null) {
-                        Log.w(TAG, "displayPreference() mFragment is null!");
-                        return false;
-                    }
-                    if (preference.getKey().equals(KEY)) {
-                        Intent intent = new Intent(mContext, QrCodeScanModeActivity.class);
-                        intent.setAction(
-                                BluetoothBroadcastUtils.ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER);
-                        mFragment.startActivityForResult(intent, REQUEST_SCAN_BT_BROADCAST_QR_CODE);
-                        if (DEBUG) {
-                            Log.w(TAG, "displayPreference() sent intent : " + intent);
-                        }
-                        return true;
-                    }
-                    return false;
-                });
-    }
-
-    private void updateVisibility() {
-        ThreadUtils.postOnBackgroundThread(
-                () -> {
-                    boolean hasActiveLe =
-                            AudioSharingUtils.getActiveSinkOnAssistant(mLocalBtManager).isPresent();
-                    ThreadUtils.postOnMainThread(() -> mPreference.setVisible(hasActiveLe));
-                });
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeActivity.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeActivity.java
deleted file mode 100644
index 091ebcb..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeActivity.java
+++ /dev/null
@@ -1,113 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-
-import androidx.fragment.app.FragmentTransaction;
-
-import com.android.settings.R;
-import com.android.settingslib.bluetooth.BluetoothBroadcastUtils;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-
-/**
- * Finding a broadcast through QR code.
- *
- * <p>To use intent action {@link
- * BluetoothBroadcastUtils#ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER}, specify the bluetooth device
- * sink of the broadcast to be provisioned in {@link
- * BluetoothBroadcastUtils#EXTRA_BLUETOOTH_DEVICE_SINK} and check the operation for all coordinated
- * set members throughout one session or not by {@link
- * BluetoothBroadcastUtils#EXTRA_BLUETOOTH_SINK_IS_GROUP}.
- */
-public class QrCodeScanModeActivity extends QrCodeScanModeBaseActivity {
-    private static final boolean DEBUG = BluetoothUtils.D;
-    private static final String TAG = "QrCodeScanModeActivity";
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    protected void handleIntent(Intent intent) {
-        String action = intent != null ? intent.getAction() : null;
-        if (DEBUG) {
-            Log.d(TAG, "handleIntent(), action = " + action);
-        }
-
-        if (action == null) {
-            finish();
-            return;
-        }
-
-        switch (action) {
-            case BluetoothBroadcastUtils.ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER:
-                showQrCodeScannerFragment(intent);
-                break;
-            default:
-                if (DEBUG) {
-                    Log.e(TAG, "Launch with an invalid action");
-                }
-                finish();
-        }
-    }
-
-    protected void showQrCodeScannerFragment(Intent intent) {
-        if (intent == null) {
-            if (DEBUG) {
-                Log.d(TAG, "intent is null, can not get bluetooth information from intent.");
-            }
-            return;
-        }
-
-        if (DEBUG) {
-            Log.d(TAG, "showQrCodeScannerFragment");
-        }
-
-        if (DEBUG) {
-            Log.d(TAG, "get extra from intent");
-        }
-
-        QrCodeScanModeFragment fragment =
-                (QrCodeScanModeFragment)
-                        mFragmentManager.findFragmentByTag(
-                                BluetoothBroadcastUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
-
-        if (fragment == null) {
-            fragment = new QrCodeScanModeFragment();
-        } else {
-            if (fragment.isVisible()) {
-                return;
-            }
-
-            // When the fragment in back stack but not on top of the stack, we can simply pop
-            // stack because current fragment transactions are arranged in an order
-            mFragmentManager.popBackStackImmediate();
-            return;
-        }
-        final FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
-
-        fragmentTransaction.replace(
-                R.id.fragment_container,
-                fragment,
-                BluetoothBroadcastUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
-        fragmentTransaction.commit();
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeBaseActivity.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeBaseActivity.java
deleted file mode 100644
index 637014a..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeBaseActivity.java
+++ /dev/null
@@ -1,64 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.SystemProperties;
-
-import androidx.fragment.app.FragmentManager;
-
-import com.android.settings.R;
-import com.android.settingslib.core.lifecycle.ObservableActivity;
-
-import com.google.android.setupdesign.util.ThemeHelper;
-import com.google.android.setupdesign.util.ThemeResolver;
-
-public abstract class QrCodeScanModeBaseActivity extends ObservableActivity {
-
-    private static final String THEME_KEY = "setupwizard.theme";
-    private static final String THEME_DEFAULT_VALUE = "SudThemeGlifV3_DayNight";
-    protected FragmentManager mFragmentManager;
-
-    protected abstract void handleIntent(Intent intent);
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        int defaultTheme =
-                ThemeHelper.isSetupWizardDayNightEnabled(this)
-                        ? com.google.android.setupdesign.R.style.SudThemeGlifV3_DayNight
-                        : com.google.android.setupdesign.R.style.SudThemeGlifV3_Light;
-        ThemeResolver themeResolver =
-                new ThemeResolver.Builder(ThemeResolver.getDefault())
-                        .setDefaultTheme(defaultTheme)
-                        .setUseDayNight(true)
-                        .build();
-        setTheme(
-                themeResolver.resolve(
-                        SystemProperties.get(THEME_KEY, THEME_DEFAULT_VALUE),
-                        /* suppressDayNight= */ !ThemeHelper.isSetupWizardDayNightEnabled(this)));
-
-        setContentView(R.layout.qrcode_scan_mode_activity);
-        mFragmentManager = getSupportFragmentManager();
-
-        if (savedInstanceState == null) {
-            handleIntent(getIntent());
-        }
-    }
-}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeFragment.java
deleted file mode 100644
index 378128d..0000000
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/qrcode/QrCodeScanModeFragment.java
+++ /dev/null
@@ -1,269 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing.audiostreams.qrcode;
-
-import android.app.Activity;
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Matrix;
-import android.graphics.Outline;
-import android.graphics.Rect;
-import android.graphics.SurfaceTexture;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.VibrationEffect;
-import android.os.Vibrator;
-import android.util.Log;
-import android.util.Size;
-import android.view.LayoutInflater;
-import android.view.TextureView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewOutlineProvider;
-import android.view.accessibility.AccessibilityEvent;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.StringRes;
-
-import com.android.settings.R;
-import com.android.settings.core.InstrumentedFragment;
-import com.android.settingslib.bluetooth.BluetoothBroadcastUtils;
-import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.qrcode.QrCamera;
-
-import java.time.Duration;
-
-public class QrCodeScanModeFragment extends InstrumentedFragment
-        implements TextureView.SurfaceTextureListener, QrCamera.ScannerCallback {
-    private static final boolean DEBUG = BluetoothUtils.D;
-    private static final String TAG = "QrCodeScanModeFragment";
-
-    /** Message sent to hide error message */
-    private static final int MESSAGE_HIDE_ERROR_MESSAGE = 1;
-
-    /** Message sent to show error message */
-    private static final int MESSAGE_SHOW_ERROR_MESSAGE = 2;
-
-    /** Message sent to broadcast QR code */
-    private static final int MESSAGE_SCAN_BROADCAST_SUCCESS = 3;
-
-    private static final long SHOW_ERROR_MESSAGE_INTERVAL = 10000;
-    private static final long SHOW_SUCCESS_SQUARE_INTERVAL = 1000;
-
-    private static final Duration VIBRATE_DURATION_QR_CODE_RECOGNITION = Duration.ofMillis(3);
-
-    public static final String KEY_BROADCAST_METADATA = "key_broadcast_metadata";
-
-    private int mCornerRadius;
-    private String mBroadcastMetadata;
-    private Context mContext;
-    private QrCamera mCamera;
-    private TextureView mTextureView;
-    private TextView mSummary;
-    private TextView mErrorMessage;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = getContext();
-    }
-
-    @Override
-    public final View onCreateView(
-            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        return inflater.inflate(
-                R.layout.qrcode_scanner_fragment, container, /* attachToRoot */ false);
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        mTextureView = view.findViewById(R.id.preview_view);
-        mCornerRadius =
-                mContext.getResources().getDimensionPixelSize(R.dimen.qrcode_preview_radius);
-        mTextureView.setSurfaceTextureListener(this);
-        mTextureView.setOutlineProvider(
-                new ViewOutlineProvider() {
-                    @Override
-                    public void getOutline(View view, Outline outline) {
-                        outline.setRoundRect(
-                                0, 0, view.getWidth(), view.getHeight(), mCornerRadius);
-                    }
-                });
-        mTextureView.setClipToOutline(true);
-        mErrorMessage = view.findViewById(R.id.error_message);
-    }
-
-    private void initCamera(SurfaceTexture surface) {
-        // Check if the camera has already created.
-        if (mCamera == null) {
-            mCamera = new QrCamera(mContext, this);
-            mCamera.start(surface);
-        }
-    }
-
-    private void destroyCamera() {
-        if (mCamera != null) {
-            mCamera.stop();
-            mCamera = null;
-        }
-    }
-
-    @Override
-    public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) {
-        initCamera(surface);
-    }
-
-    @Override
-    public void onSurfaceTextureSizeChanged(
-            @NonNull SurfaceTexture surface, int width, int height) {}
-
-    @Override
-    public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) {
-        destroyCamera();
-        return true;
-    }
-
-    @Override
-    public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) {}
-
-    @Override
-    public void handleSuccessfulResult(String qrCode) {
-        if (DEBUG) {
-            Log.d(TAG, "handleSuccessfulResult(), get the qr code string.");
-        }
-        mBroadcastMetadata = qrCode;
-        handleBtLeAudioScanner();
-    }
-
-    @Override
-    public void handleCameraFailure() {
-        destroyCamera();
-    }
-
-    @Override
-    public Size getViewSize() {
-        return new Size(mTextureView.getWidth(), mTextureView.getHeight());
-    }
-
-    @Override
-    public Rect getFramePosition(Size previewSize, int cameraOrientation) {
-        return new Rect(0, 0, previewSize.getHeight(), previewSize.getHeight());
-    }
-
-    @Override
-    public void setTransform(Matrix transform) {
-        mTextureView.setTransform(transform);
-    }
-
-    @Override
-    public boolean isValid(String qrCode) {
-        if (qrCode.startsWith(BluetoothBroadcastUtils.SCHEME_BT_BROADCAST_METADATA)) {
-            return true;
-        } else {
-            showErrorMessage(R.string.bt_le_audio_qr_code_is_not_valid_format);
-            return false;
-        }
-    }
-
-    protected boolean isDecodeTaskAlive() {
-        return mCamera != null && mCamera.isDecodeTaskAlive();
-    }
-
-    private final Handler mHandler =
-            new Handler() {
-                @Override
-                public void handleMessage(Message msg) {
-                    switch (msg.what) {
-                        case MESSAGE_HIDE_ERROR_MESSAGE:
-                            mErrorMessage.setVisibility(View.INVISIBLE);
-                            break;
-
-                        case MESSAGE_SHOW_ERROR_MESSAGE:
-                            final String errorMessage = (String) msg.obj;
-
-                            mErrorMessage.setVisibility(View.VISIBLE);
-                            mErrorMessage.setText(errorMessage);
-                            mErrorMessage.sendAccessibilityEvent(
-                                    AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
-
-                            // Cancel any pending messages to hide error view and requeue the
-                            // message so
-                            // user has time to see error
-                            removeMessages(MESSAGE_HIDE_ERROR_MESSAGE);
-                            sendEmptyMessageDelayed(
-                                    MESSAGE_HIDE_ERROR_MESSAGE, SHOW_ERROR_MESSAGE_INTERVAL);
-                            break;
-
-                        case MESSAGE_SCAN_BROADCAST_SUCCESS:
-                            Log.d(TAG, "scan success");
-                            final Intent resultIntent = new Intent();
-                            resultIntent.putExtra(KEY_BROADCAST_METADATA, mBroadcastMetadata);
-                            getActivity().setResult(Activity.RESULT_OK, resultIntent);
-                            notifyUserForQrCodeRecognition();
-                            break;
-                        default:
-                    }
-                }
-            };
-
-    private void notifyUserForQrCodeRecognition() {
-        if (mCamera != null) {
-            mCamera.stop();
-        }
-
-        mErrorMessage.setVisibility(View.INVISIBLE);
-        mTextureView.setVisibility(View.INVISIBLE);
-
-        triggerVibrationForQrCodeRecognition(getContext());
-
-        getActivity().finish();
-    }
-
-    private static void triggerVibrationForQrCodeRecognition(Context context) {
-        Vibrator vibrator = context.getSystemService(Vibrator.class);
-        if (vibrator == null) {
-            return;
-        }
-        vibrator.vibrate(
-                VibrationEffect.createOneShot(
-                        VIBRATE_DURATION_QR_CODE_RECOGNITION.toMillis(),
-                        VibrationEffect.DEFAULT_AMPLITUDE));
-    }
-
-    private void showErrorMessage(@StringRes int messageResId) {
-        final Message message =
-                mHandler.obtainMessage(MESSAGE_SHOW_ERROR_MESSAGE, getString(messageResId));
-        message.sendToTarget();
-    }
-
-    private void handleBtLeAudioScanner() {
-        Message message = mHandler.obtainMessage(MESSAGE_SCAN_BROADCAST_SUCCESS);
-        mHandler.sendMessageDelayed(message, SHOW_SUCCESS_SQUARE_INTERVAL);
-    }
-
-    private void updateSummary() {
-        mSummary.setText(getString(R.string.bt_le_audio_scan_qr_code_scanner));
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.LE_AUDIO_BROADCAST_SCAN_QR_CODE;
-    }
-}
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index e3131f7..86582c7 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -86,7 +86,6 @@
 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
 import com.android.settings.connecteddevice.NfcAndPaymentFragment;
 import com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment;
-import com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamConfirmDialog;
 import com.android.settings.connecteddevice.stylus.StylusUsiDetailsFragment;
 import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
 import com.android.settings.datausage.DataSaverSummary;
@@ -359,7 +358,6 @@
             DataUsageList.class.getName(),
             ToggleBackupSettingFragment.class.getName(),
             PreviouslyConnectedDeviceDashboardFragment.class.getName(),
-            AudioStreamConfirmDialog.class.getName(),
             BatterySaverScheduleSettings.class.getName(),
             MobileNetworkListFragment.class.getName(),
             PowerMenuSettings.class.getName(),
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
index 7a7eb8c..b3e66a9 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
@@ -20,7 +20,9 @@
 import android.os.UserHandle;
 import android.view.View;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
@@ -36,6 +38,7 @@
 
 public class UnrestrictedDataAccessPreference extends AppSwitchPreference implements
         DataSaverBackend.Listener {
+    private static final String ECM_SETTING_IDENTIFIER = "android:unrestricted_data_access";
 
     private final ApplicationsState mApplicationsState;
     private final AppEntry mEntry;
@@ -58,6 +61,7 @@
         mParentFragment = parentFragment;
         setDisabledByAdmin(checkIfMeteredDataUsageUserControlDisabled(
                 context, entry.info.packageName, UserHandle.getUserId(entry.info.uid)));
+        mHelper.checkEcmRestrictionAndSetDisabled(ECM_SETTING_IDENTIFIER, entry.info.packageName);
         updateState();
         setKey(generateKey(mEntry));
 
@@ -166,10 +170,24 @@
         return mHelper.isDisabledByAdmin();
     }
 
+    @VisibleForTesting
+    boolean isDisabledByEcm() {
+        return mHelper.isDisabledByEcm();
+    }
+
     public void setDisabledByAdmin(EnforcedAdmin admin) {
         mHelper.setDisabledByAdmin(admin);
     }
 
+    /**
+     * Checks if the given setting is subject to Enhanced Confirmation Mode restrictions for this
+     * package. Marks the preference as disabled if so.
+     * @param packageName the package to check the restriction for
+     */
+    public void checkEcmRestrictionAndSetDisabled(@NonNull String packageName) {
+        mHelper.checkEcmRestrictionAndSetDisabled(ECM_SETTING_IDENTIFIER, packageName);
+    }
+
     // Sets UI state based on allowlist/denylist status.
     public void updateState() {
         setTitle(mEntry.label);
@@ -179,7 +197,8 @@
                 setSummary(com.android.settingslib.widget.restricted.R.string.disabled_by_admin);
             } else if (mDataUsageState.isDataSaverDenylisted) {
                 setSummary(R.string.restrict_background_blocklisted);
-            } else {
+            // If disabled by ECM, the summary is set directly by the switch.
+            } else if (!isDisabledByEcm()) {
                 setSummary("");
             }
         }
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java
index fd2fcda..0fb30a8 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java
@@ -151,6 +151,7 @@
             } else {
                 preference.setDisabledByAdmin(checkIfMeteredDataUsageUserControlDisabled(mContext,
                         entry.info.packageName, UserHandle.getUserId(entry.info.uid)));
+                preference.checkEcmRestrictionAndSetDisabled(entry.info.packageName);
                 preference.updateState();
             }
             preference.setOrder(i);
diff --git a/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java b/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
index abeb949..455f74f 100644
--- a/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
+++ b/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
@@ -17,6 +17,7 @@
 package com.android.settings.development;
 
 import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
+import static com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays;
 import static com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay;
 
 import android.content.Context;
@@ -47,7 +48,9 @@
 
     public ForcePeakRefreshRatePreferenceController(Context context) {
         super(context);
-        mPeakRefreshRate = findHighestRefreshRateForDefaultDisplay(context);
+        mPeakRefreshRate = Flags.backUpSmoothDisplayAndForcePeakRefreshRate()
+                ? findHighestRefreshRateAmongAllDisplays(context)
+                : findHighestRefreshRateForDefaultDisplay(context);
         Log.d(TAG, "DEFAULT_REFRESH_RATE : " + DEFAULT_REFRESH_RATE
             + " mPeakRefreshRate : " + mPeakRefreshRate);
     }
diff --git a/src/com/android/settings/development/SensitiveContentProtectionPreferenceController.kt b/src/com/android/settings/development/SensitiveContentProtectionPreferenceController.kt
index e627f81..8acd700 100644
--- a/src/com/android/settings/development/SensitiveContentProtectionPreferenceController.kt
+++ b/src/com/android/settings/development/SensitiveContentProtectionPreferenceController.kt
@@ -18,6 +18,7 @@
 import android.content.Context
 import android.permission.flags.Flags.sensitiveNotificationAppProtection
 import android.provider.Settings
+import android.view.flags.Flags.sensitiveContentAppProtection
 import androidx.annotation.VisibleForTesting
 import androidx.preference.Preference
 import androidx.preference.TwoStatePreference
@@ -64,6 +65,7 @@
 
     override fun isAvailable(): Boolean {
         return sensitiveNotificationAppProtection() || screenshareNotificationHiding()
+            || sensitiveContentAppProtection()
     }
 
     companion object {
diff --git a/src/com/android/settings/deviceinfo/firmwareversion/SecurityPatchLevelPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/SecurityPatchLevelPreferenceController.java
index 1df78a8..dcb5a37 100644
--- a/src/com/android/settings/deviceinfo/firmwareversion/SecurityPatchLevelPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/firmwareversion/SecurityPatchLevelPreferenceController.java
@@ -32,7 +32,7 @@
 
     private static final String TAG = "SecurityPatchCtrl";
     private static final Uri INTENT_URI_DATA = Uri.parse(
-            "https://source.android.com/security/bulletin/");
+            "https://source.android.com/docs/security/bulletin/");
 
     private final PackageManager mPackageManager;
     private final String mCurrentPatch;
diff --git a/src/com/android/settings/display/EvenDimmerPreferenceController.java b/src/com/android/settings/display/EvenDimmerPreferenceController.java
new file mode 100644
index 0000000..b86c845
--- /dev/null
+++ b/src/com/android/settings/display/EvenDimmerPreferenceController.java
@@ -0,0 +1,76 @@
+/*
+ * 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 com.android.settings.display;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.provider.Settings;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.android.server.display.feature.flags.Flags;
+import com.android.settings.R;
+import com.android.settings.core.TogglePreferenceController;
+
+/**
+ * Controller for the settings toggle which allows screen brightness to go even dimmer than usual.
+ *
+ */
+public class EvenDimmerPreferenceController extends TogglePreferenceController {
+
+    private static final String TAG = "EvenDimmerPreferenceController";
+
+    private final Resources mResources;
+
+    public EvenDimmerPreferenceController(@NonNull Context context, @NonNull String key) {
+        super(context, key);
+        mResources = context.getResources();
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        // enable based on flag and config.xml
+        final boolean enabledInConfig = mResources.getBoolean(
+                com.android.internal.R.bool.config_evenDimmerEnabled);
+        return (Flags.evenDimmer() && enabledInConfig) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    public boolean isChecked() {
+        return getEvenDimmerActivated();
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        final float enabled = getAvailabilityStatus() == AVAILABLE && isChecked ? 1 : 0;
+        Log.i(TAG, "setChecked to : " + enabled);
+
+        return Settings.Secure.putFloat(
+                mContext.getContentResolver(), Settings.Secure.EVEN_DIMMER_ACTIVATED, enabled);
+    }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    private boolean getEvenDimmerActivated() {
+        return Settings.Secure.getFloat(mContext.getContentResolver(),
+                Settings.Secure.EVEN_DIMMER_ACTIVATED, 0) == 1;
+    }
+}
diff --git a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
index 17d763a..261eaf1 100644
--- a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
+++ b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
@@ -17,6 +17,7 @@
 package com.android.settings.display;
 
 import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
+import static com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays;
 import static com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay;
 
 import android.content.Context;
@@ -66,7 +67,9 @@
                         updateState(mPreference);
                     }
                 };
-        mPeakRefreshRate = Math.round(findHighestRefreshRateForDefaultDisplay(context));
+        mPeakRefreshRate = Math.round(Flags.backUpSmoothDisplayAndForcePeakRefreshRate()
+                ? findHighestRefreshRateAmongAllDisplays(context)
+                : findHighestRefreshRateForDefaultDisplay(context));
         Log.d(
                 TAG,
                 "DEFAULT_REFRESH_RATE : "
diff --git a/src/com/android/settings/inputmethod/TrackpadTouchGestureSettings.java b/src/com/android/settings/inputmethod/TrackpadTouchGestureSettings.java
index 44d77a3..9a4b90f 100644
--- a/src/com/android/settings/inputmethod/TrackpadTouchGestureSettings.java
+++ b/src/com/android/settings/inputmethod/TrackpadTouchGestureSettings.java
@@ -52,7 +52,7 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider(R.xml.trackpad_settings) {
+            new BaseSearchIndexProvider(R.xml.trackpad_gesture_settings) {
                 @Override
                 protected boolean isPageSearchEnabled(Context context) {
                     return FeatureFlagUtils
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 0da1034..bcf0d00 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -1261,7 +1261,8 @@
         WifiEntryConnectCallback callback =
                 new WifiEntryConnectCallback(wifiEntry, editIfNoConfig, fullScreenEdit);
 
-        if (Flags.wepUsage() && wifiEntry.getSecurityTypes().contains(WifiEntry.SECURITY_WEP)) {
+        if (Flags.androidVWifiApi() && wifiEntry.getSecurityTypes()
+                .contains(WifiEntry.SECURITY_WEP)) {
             WepNetworkDialogActivity.checkWepAllowed(
                     getContext(), getViewLifecycleOwner(), wifiEntry.getSsid(), () -> {
                         wifiEntry.connect(callback);
diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java
index 84e4e75..2498ec9 100644
--- a/src/com/android/settings/network/SubscriptionUtil.java
+++ b/src/com/android/settings/network/SubscriptionUtil.java
@@ -17,13 +17,15 @@
 package com.android.settings.network;
 
 import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX;
-import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT;
 import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING;
+import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT;
 
 import static com.android.internal.util.CollectionUtils.emptyIfNull;
 
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
 import android.os.ParcelUuid;
 import android.provider.Settings;
 import android.telephony.PhoneNumberUtils;
@@ -560,6 +562,7 @@
             Log.i(TAG, "Unable to delete subscription due to invalid subscription ID.");
             return;
         }
+        // TODO(b/325693582): Add verification if carrier is RAC and logic for new dialog
         context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
     }
 
@@ -832,4 +835,29 @@
         }
         return true;
     }
+
+    /**
+     * Returns {@code true} if device is connected to Wi-Fi or mobile data provided by a different
+     * subId.
+     *
+     * @param context context
+     * @param targetSubId subscription that is going to be deleted
+     */
+    @VisibleForTesting
+    static boolean isConnectedToWifiOrDifferentSubId(@NonNull Context context, int targetSubId) {
+        ConnectivityManager connectivityManager =
+                context.getSystemService(ConnectivityManager.class);
+        NetworkCapabilities capabilities =
+                connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
+
+        if (capabilities != null) {
+            if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
+                // Connected to WiFi
+                return true;
+            } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
+                return targetSubId != SubscriptionManager.getActiveDataSubscriptionId();
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/settings/network/apn/ApnEditPageProvider.kt b/src/com/android/settings/network/apn/ApnEditPageProvider.kt
index cea2b44..1abcbdb 100644
--- a/src/com/android/settings/network/apn/ApnEditPageProvider.kt
+++ b/src/com/android/settings/network/apn/ApnEditPageProvider.kt
@@ -38,17 +38,10 @@
 import androidx.navigation.NavType
 import androidx.navigation.navArgument
 import com.android.settings.R
-import com.android.settings.network.apn.ApnNetworkTypes.getNetworkTypeDisplayNames
-import com.android.settings.network.apn.ApnNetworkTypes.getNetworkTypeSelectedOptionsState
-import com.android.settings.network.apn.ApnTypes.APN_TYPES_OPTIONS
-import com.android.settings.network.apn.ApnTypes.APN_TYPE_MMS
-import com.android.settings.network.apn.ApnTypes.getApnTypeSelectedOptionsState
-import com.android.settings.network.apn.ApnTypes.updateApnType
 import com.android.settingslib.spa.framework.common.SettingsPageProvider
 import com.android.settingslib.spa.framework.compose.LocalNavController
 import com.android.settingslib.spa.framework.theme.SettingsDimension
-import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuBox
-import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuCheckBox
+import com.android.settingslib.spa.widget.editor.SettingsDropdownBox
 import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
 import com.android.settingslib.spa.widget.editor.SettingsTextFieldPassword
 import com.android.settingslib.spa.widget.preference.SwitchPreference
@@ -79,7 +72,7 @@
         val uriString = arguments!!.getString(URI)
         val uriInit = Uri.parse(String(Base64.getDecoder().decode(uriString)))
         val subId = arguments.getInt(SUB_ID)
-        val apnDataInit = getApnDataInit(arguments, LocalContext.current, uriInit, subId)
+        val apnDataInit = getApnDataInit(arguments, LocalContext.current, uriInit, subId) ?: return
         val apnDataCur = remember {
             mutableStateOf(apnDataInit)
         }
@@ -101,12 +94,7 @@
     val context = LocalContext.current
     val authTypeOptions = stringArrayResource(R.array.apn_auth_entries).toList()
     val apnProtocolOptions = stringArrayResource(R.array.apn_protocol_entries).toList()
-    val networkTypeSelectedOptionsState = remember {
-        getNetworkTypeSelectedOptionsState(apnData.networkType)
-    }
-    var apnTypeSelectedOptionsState = remember {
-        getApnTypeSelectedOptionsState(apnData.apnType)
-    }
+    var apnTypeMmsSelected by remember { mutableStateOf(false) }
     val navController = LocalNavController.current
     var valid: String?
     RegularScaffold(
@@ -114,11 +102,6 @@
         actions = {
             if (!apnData.customizedConfig.readOnlyApn) {
                 Button(onClick = {
-                    apnData = apnData.copy(
-                        networkType = ApnNetworkTypes.getNetworkType(
-                            networkTypeSelectedOptionsState
-                        )
-                    )
                     valid = validateAndSaveApnData(
                         apnDataInit,
                         apnData,
@@ -193,27 +176,12 @@
                 label = stringResource(R.string.apn_server),
                 enabled = apnData.serverEnabled
             ) { apnData = apnData.copy(server = it) }
-            SettingsExposedDropdownMenuCheckBox(
-                label = stringResource(R.string.apn_type),
-                options = APN_TYPES_OPTIONS,
-                selectedOptionsState = apnTypeSelectedOptionsState,
-                enabled = apnData.apnTypeEnabled,
-                errorMessage = validateAPNType(
-                    apnData.validEnabled, apnData.apnType,
-                    apnData.customizedConfig.readOnlyApnTypes, context
-                )
-            ) {
-                val apnType = updateApnType(
-                    apnTypeSelectedOptionsState,
-                    apnData.customizedConfig.defaultApnTypes,
-                    apnData.customizedConfig.readOnlyApnTypes
-                )
-                apnTypeSelectedOptionsState = getApnTypeSelectedOptionsState(apnType)
-                apnData = apnData.copy(
-                    apnType = apnType
-                )
-            }
-            if (apnTypeSelectedOptionsState.contains(APN_TYPES_OPTIONS.indexOf(APN_TYPE_MMS))) {
+            ApnTypeCheckBox(
+                apnData = apnData,
+                onTypeChanged = { apnData = apnData.copy(apnType = it) },
+                onMmsSelectedChanged = { apnTypeMmsSelected = it },
+            )
+            if (apnTypeMmsSelected) {
                 SettingsOutlinedTextField(
                     value = apnData.mmsc,
                     label = stringResource(R.string.apn_mmsc),
@@ -231,31 +199,25 @@
                     enabled = apnData.mmsPortEnabled
                 ) { apnData = apnData.copy(mmsPort = it) }
             }
-            SettingsExposedDropdownMenuBox(
+            SettingsDropdownBox(
                 label = stringResource(R.string.apn_auth_type),
                 options = authTypeOptions,
                 selectedOptionIndex = apnData.authType,
                 enabled = apnData.authTypeEnabled,
             ) { apnData = apnData.copy(authType = it) }
-            SettingsExposedDropdownMenuBox(
+            SettingsDropdownBox(
                 label = stringResource(R.string.apn_protocol),
                 options = apnProtocolOptions,
                 selectedOptionIndex = apnData.apnProtocol,
                 enabled = apnData.apnProtocolEnabled
             ) { apnData = apnData.copy(apnProtocol = it) }
-            SettingsExposedDropdownMenuBox(
+            SettingsDropdownBox(
                 label = stringResource(R.string.apn_roaming_protocol),
                 options = apnProtocolOptions,
                 selectedOptionIndex = apnData.apnRoaming,
                 enabled = apnData.apnRoamingEnabled
             ) { apnData = apnData.copy(apnRoaming = it) }
-            SettingsExposedDropdownMenuCheckBox(
-                label = stringResource(R.string.network_type),
-                options = getNetworkTypeDisplayNames(),
-                selectedOptionsState = networkTypeSelectedOptionsState,
-                emptyVal = stringResource(R.string.network_type_unspecified),
-                enabled = apnData.networkTypeEnabled
-            ) {}
+            ApnNetworkTypeCheckBox(apnData) { apnData = apnData.copy(networkType = it) }
             SwitchPreference(
                 object : SwitchPreferenceModel {
                     override val title = context.resources.getString(R.string.carrier_enabled)
diff --git a/src/com/android/settings/network/apn/ApnNetworkTypeCheckBox.kt b/src/com/android/settings/network/apn/ApnNetworkTypeCheckBox.kt
new file mode 100644
index 0000000..bc85f55
--- /dev/null
+++ b/src/com/android/settings/network/apn/ApnNetworkTypeCheckBox.kt
@@ -0,0 +1,41 @@
+/*
+ * 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 com.android.settings.network.apn
+
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
+import androidx.compose.ui.res.stringResource
+import com.android.settings.R
+import com.android.settingslib.spa.widget.editor.SettingsDropdownCheckBox
+
+@Composable
+fun ApnNetworkTypeCheckBox(apnData: ApnData, onNetworkTypeChanged: (Long) -> Unit) {
+    val options = remember { ApnNetworkTypes.getNetworkTypeOptions() }
+    val selectedStateMap = remember {
+        ApnNetworkTypes.networkTypeToSelectedStateMap(options, apnData.networkType)
+    }
+    SettingsDropdownCheckBox(
+        label = stringResource(R.string.network_type),
+        options = options,
+        emptyText = stringResource(R.string.network_type_unspecified),
+        enabled = apnData.networkTypeEnabled,
+    ) {
+        onNetworkTypeChanged(
+            ApnNetworkTypes.selectedStateMapToNetworkType(options, selectedStateMap)
+        )
+    }
+}
diff --git a/src/com/android/settings/network/apn/ApnNetworkTypes.kt b/src/com/android/settings/network/apn/ApnNetworkTypes.kt
index 0ccd33a..e7a93b3 100644
--- a/src/com/android/settings/network/apn/ApnNetworkTypes.kt
+++ b/src/com/android/settings/network/apn/ApnNetworkTypes.kt
@@ -17,8 +17,9 @@
 package com.android.settings.network.apn
 
 import android.telephony.TelephonyManager
-import androidx.compose.runtime.mutableStateListOf
-import androidx.compose.runtime.snapshots.SnapshotStateList
+import androidx.compose.runtime.mutableStateMapOf
+import androidx.compose.runtime.snapshots.SnapshotStateMap
+import com.android.settingslib.spa.widget.editor.SettingsDropdownCheckOption
 
 object ApnNetworkTypes {
     private val Types = listOf(
@@ -39,32 +40,40 @@
         TelephonyManager.NETWORK_TYPE_NR,
     )
 
-    fun getNetworkTypeDisplayNames(): List<String> =
-        Types.map { TelephonyManager.getNetworkTypeName(it) }
+    fun getNetworkTypeOptions(): List<SettingsDropdownCheckOption> =
+        Types.map { SettingsDropdownCheckOption(TelephonyManager.getNetworkTypeName(it)) }
 
     /**
      * Gets the selected Network type Selected Options according to network type.
      * @param networkType Initialized network type bitmask, often multiple network type options may
      *                    be included.
      */
-    fun getNetworkTypeSelectedOptionsState(networkType: Long): SnapshotStateList<Int> {
-        val networkTypeSelectedOptionsState = mutableStateListOf<Int>()
+    fun networkTypeToSelectedStateMap(
+        options: List<SettingsDropdownCheckOption>,
+        networkType: Long,
+    ): SnapshotStateMap<SettingsDropdownCheckOption, Boolean> {
+        val stateMap = mutableStateMapOf<SettingsDropdownCheckOption, Boolean>()
         Types.forEachIndexed { index, type ->
             if (networkType and TelephonyManager.getBitMaskForNetworkType(type) != 0L) {
-                networkTypeSelectedOptionsState.add(index)
+                stateMap[options[index]] = true
             }
         }
-        return networkTypeSelectedOptionsState
+        return stateMap
     }
 
     /**
      * Gets the network type according to the selected Network type Selected Options.
-     * @param networkTypeSelectedOptionsState the selected Network type Selected Options.
+     * @param stateMap the selected Network type Selected Options.
      */
-    fun getNetworkType(networkTypeSelectedOptionsState: SnapshotStateList<Int>): Long {
+    fun selectedStateMapToNetworkType(
+        options: List<SettingsDropdownCheckOption>,
+        stateMap: SnapshotStateMap<SettingsDropdownCheckOption, Boolean>,
+    ): Long {
         var networkType = 0L
-        networkTypeSelectedOptionsState.forEach { option ->
-            networkType = networkType or TelephonyManager.getBitMaskForNetworkType(Types[option])
+        options.forEachIndexed { index, option ->
+            if (stateMap[option] == true) {
+                networkType = networkType or TelephonyManager.getBitMaskForNetworkType(Types[index])
+            }
         }
         return networkType
     }
diff --git a/src/com/android/settings/network/apn/ApnRepository.kt b/src/com/android/settings/network/apn/ApnRepository.kt
index 2266983..2d41976 100644
--- a/src/com/android/settings/network/apn/ApnRepository.kt
+++ b/src/com/android/settings/network/apn/ApnRepository.kt
@@ -18,6 +18,7 @@
 
 import android.content.ContentValues
 import android.content.Context
+import android.database.Cursor
 import android.net.Uri
 import android.provider.Telephony
 import android.telephony.SubscriptionManager
@@ -27,26 +28,7 @@
 import com.android.settingslib.utils.ThreadUtils
 import java.util.Locale
 
-const val NAME_INDEX = 1
-const val APN_INDEX = 2
-const val PROXY_INDEX = 3
-const val PORT_INDEX = 4
-const val USER_INDEX = 5
-const val SERVER_INDEX = 6
-const val PASSWORD_INDEX = 7
-const val MMSC_INDEX = 8
-const val MMSPROXY_INDEX = 9
-const val MMSPORT_INDEX = 10
-const val AUTH_TYPE_INDEX = 11
-const val TYPE_INDEX = 12
-const val PROTOCOL_INDEX = 13
-const val CARRIER_ENABLED_INDEX = 14
-const val NETWORK_TYPE_INDEX = 15
-const val ROAMING_PROTOCOL_INDEX = 16
-const val EDITED_INDEX = 17
-const val USER_EDITABLE_INDEX = 18
-
-val sProjection = arrayOf(
+val Projection = arrayOf(
     Telephony.Carriers._ID,  // 0
     Telephony.Carriers.NAME,  // 1
     Telephony.Carriers.APN,  // 2
@@ -68,7 +50,7 @@
     Telephony.Carriers.USER_EDITABLE,  // 18
 )
 
-const val TAG = "ApnRepository"
+private const val TAG = "ApnRepository"
 
 /**
  * Query apn related information based on uri.
@@ -79,56 +61,39 @@
 fun getApnDataFromUri(uri: Uri, context: Context): ApnData {
     var apnData = ApnData()
     val contentResolver = context.contentResolver
-    val apnProtocolOptions = context.resources.getStringArray(R.array.apn_protocol_entries).toList()
 
     contentResolver.query(
         uri,
-        sProjection,
+        Projection,
         null /* selection */,
         null /* selectionArgs */,
         null /* sortOrder */
     ).use { cursor ->
         if (cursor != null && cursor.moveToFirst()) {
-            val name = cursor.getString(NAME_INDEX)
-            val apn = cursor.getString(APN_INDEX)
-            val proxy = cursor.getString(PROXY_INDEX)
-            val port = cursor.getString(PORT_INDEX)
-            val userName = cursor.getString(USER_INDEX)
-            val server = cursor.getString(SERVER_INDEX)
-            val passWord = cursor.getString(PASSWORD_INDEX)
-            val mmsc = cursor.getString(MMSC_INDEX)
-            val mmsProxy = cursor.getString(MMSPROXY_INDEX)
-            val mmsPort = cursor.getString(MMSPORT_INDEX)
-            val authType = cursor.getInt(AUTH_TYPE_INDEX)
-            val apnType = cursor.getString(TYPE_INDEX)
-            val apnProtocol = convertProtocol2Options(cursor.getString(PROTOCOL_INDEX), context)
-            val apnRoaming =
-                convertProtocol2Options(cursor.getString(ROAMING_PROTOCOL_INDEX), context)
-            val apnEnable = cursor.getInt(CARRIER_ENABLED_INDEX) == 1
-            val networkType = cursor.getLong(NETWORK_TYPE_INDEX)
-
-            val edited = cursor.getInt(EDITED_INDEX)
-            val userEditable = cursor.getInt(USER_EDITABLE_INDEX)
-
-            apnData = apnData.copy(
-                name = name,
-                apn = apn,
-                proxy = proxy,
-                port = port,
-                userName = userName,
-                passWord = passWord,
-                server = server,
-                mmsc = mmsc,
-                mmsProxy = mmsProxy,
-                mmsPort = mmsPort,
-                authType = authType,
-                apnType = apnType,
-                apnProtocol = apnProtocolOptions.indexOf(apnProtocol),
-                apnRoaming = apnProtocolOptions.indexOf(apnRoaming),
-                apnEnable = apnEnable,
-                networkType = networkType,
-                edited = edited,
-                userEditable = userEditable,
+            apnData = ApnData(
+                id = cursor.getInt(Telephony.Carriers._ID),
+                name = cursor.getString(Telephony.Carriers.NAME),
+                apn = cursor.getString(Telephony.Carriers.APN),
+                proxy = cursor.getString(Telephony.Carriers.PROXY),
+                port = cursor.getString(Telephony.Carriers.PORT),
+                userName = cursor.getString(Telephony.Carriers.USER),
+                passWord = cursor.getString(Telephony.Carriers.PASSWORD),
+                server = cursor.getString(Telephony.Carriers.SERVER),
+                mmsc = cursor.getString(Telephony.Carriers.MMSC),
+                mmsProxy = cursor.getString(Telephony.Carriers.MMSPROXY),
+                mmsPort = cursor.getString(Telephony.Carriers.MMSPORT),
+                authType = cursor.getInt(Telephony.Carriers.AUTH_TYPE),
+                apnType = cursor.getString(Telephony.Carriers.TYPE),
+                apnProtocol = context.convertProtocol2Options(
+                    cursor.getString(Telephony.Carriers.PROTOCOL)
+                ),
+                apnRoaming = context.convertProtocol2Options(
+                    cursor.getString(Telephony.Carriers.ROAMING_PROTOCOL)
+                ),
+                apnEnable = cursor.getInt(Telephony.Carriers.CARRIER_ENABLED) == 1,
+                networkType = cursor.getLong(Telephony.Carriers.NETWORK_TYPE_BITMASK),
+                edited = cursor.getInt(Telephony.Carriers.EDITED_STATUS),
+                userEditable = cursor.getInt(Telephony.Carriers.USER_EDITABLE),
             )
         }
     }
@@ -138,42 +103,23 @@
     return apnData
 }
 
+private fun Cursor.getString(columnName: String) = getString(getColumnIndexOrThrow(columnName))
+private fun Cursor.getInt(columnName: String) = getInt(getColumnIndexOrThrow(columnName))
+private fun Cursor.getLong(columnName: String) = getLong(getColumnIndexOrThrow(columnName))
+
 /**
- * Returns The UI choice (e.g., "IPv4/IPv6") corresponding to the given
- * raw value of the protocol preference (e.g., "IPV4V6"). If unknown,
- * return null.
- *
- * @return UI choice
+ * Returns The UI choice index corresponding to the given raw value of the protocol preference
+ * (e.g., "IPV4V6").
+ * If unknown, return -1.
  */
-private fun convertProtocol2Options(raw: String, context: Context): String {
-    val apnProtocolOptions = context.resources.getStringArray(R.array.apn_protocol_entries).toList()
-    val apnProtocolValues = context.resources.getStringArray(R.array.apn_protocol_values).toList()
-    var uRaw = raw.uppercase(Locale.getDefault())
-    uRaw = if (uRaw == "IPV4") "IP" else uRaw
-    val protocolIndex = apnProtocolValues.indexOf(uRaw)
-    return if (protocolIndex == -1) {
-        ""
-    } else {
-        try {
-            apnProtocolOptions[protocolIndex]
-        } catch (e: ArrayIndexOutOfBoundsException) {
-            ""
-        }
-    }
+private fun Context.convertProtocol2Options(protocol: String): Int {
+    var normalizedProtocol = protocol.uppercase(Locale.getDefault())
+    if (normalizedProtocol == "IPV4") normalizedProtocol = "IP"
+    return resources.getStringArray(R.array.apn_protocol_values).indexOf(normalizedProtocol)
 }
 
-fun convertOptions2Protocol(protocolIndex: Int, context: Context): String {
-    val apnProtocolValues = context.resources.getStringArray(R.array.apn_protocol_values).toList()
-    return if (protocolIndex == -1) {
-        ""
-    } else {
-        try {
-            apnProtocolValues[protocolIndex]
-        } catch (e: ArrayIndexOutOfBoundsException) {
-            ""
-        }
-    }
-}
+fun Context.convertOptions2Protocol(protocolIndex: Int): String =
+    resources.getStringArray(R.array.apn_protocol_values).getOrElse(protocolIndex) { "" }
 
 fun updateApnDataToDatabase(
     newApn: Boolean,
@@ -183,13 +129,13 @@
 ) {
     ThreadUtils.postOnBackgroundThread {
         if (newApn) {
-            // Add a new apn to the database
+            Log.d(TAG, "Adding an new APN to the database $uriInit $values")
             val newUri = context.contentResolver.insert(uriInit, values)
             if (newUri == null) {
                 Log.e(TAG, "Can't add a new apn to database $uriInit")
             }
         } else {
-            // Update the existing apn
+            Log.d(TAG, "Updating an existing APN to the database $uriInit $values")
             context.contentResolver.update(
                 uriInit, values, null /* where */, null /* selection Args */
             )
@@ -210,9 +156,12 @@
 )
 
 fun isItemExist(apnData: ApnData, context: Context): String? {
-    val contentValueMap = apnData.getContentValueMap(context).filterKeys { it in NonDuplicatedKeys }
-    val list = contentValueMap.entries.toList()
-    val selection = list.joinToString(" AND ") { "${it.key} = ?" }
+    val selectionMap = apnData.getContentValueMap(context).filterKeys { it in NonDuplicatedKeys }
+        .mapKeys { "${it.key} = ?" }
+        .toMutableMap()
+    if (apnData.id != -1) selectionMap += "${Telephony.Carriers._ID} != ?" to apnData.id
+    val list = selectionMap.entries.toList()
+    val selection = list.joinToString(" AND ") { it.key }
     val selectionArgs: Array<String> = list.map { it.value.toString() }.toTypedArray()
     context.contentResolver.query(
         Uri.withAppendedPath(Telephony.Carriers.SIM_APN_URI, apnData.subId.toString()),
diff --git a/src/com/android/settings/network/apn/ApnStatus.kt b/src/com/android/settings/network/apn/ApnStatus.kt
index 02e2814..ab16f1c 100644
--- a/src/com/android/settings/network/apn/ApnStatus.kt
+++ b/src/com/android/settings/network/apn/ApnStatus.kt
@@ -22,19 +22,14 @@
 import android.os.Bundle
 import android.provider.Telephony
 import android.telephony.CarrierConfigManager
-import android.text.TextUtils
 import android.util.Log
-import com.android.internal.util.ArrayUtils
 import com.android.settings.R
-import com.android.settings.network.apn.ApnTypes.APN_TYPES
-import com.android.settings.network.apn.ApnTypes.APN_TYPE_ALL
-import com.android.settings.network.apn.ApnTypes.APN_TYPE_EMERGENCY
-import com.android.settings.network.apn.ApnTypes.APN_TYPE_IA
-import com.android.settings.network.apn.ApnTypes.APN_TYPE_IMS
-import com.android.settings.network.apn.ApnTypes.APN_TYPE_MCX
-import java.util.Locale
+import com.android.settings.network.apn.ApnTypes.getPreSelectedApnType
+
+private const val TAG = "ApnStatus"
 
 data class ApnData(
+    val id: Int = -1,
     val name: String = "",
     val apn: String = "",
     val proxy: String = "",
@@ -86,8 +81,8 @@
         Telephony.Carriers.MMSPROXY to mmsProxy,
         Telephony.Carriers.MMSPORT to mmsPort,
         Telephony.Carriers.AUTH_TYPE to authType,
-        Telephony.Carriers.PROTOCOL to convertOptions2Protocol(apnProtocol, context),
-        Telephony.Carriers.ROAMING_PROTOCOL to convertOptions2Protocol(apnRoaming, context),
+        Telephony.Carriers.PROTOCOL to context.convertOptions2Protocol(apnProtocol),
+        Telephony.Carriers.ROAMING_PROTOCOL to context.convertOptions2Protocol(apnRoaming),
         Telephony.Carriers.TYPE to apnType,
         Telephony.Carriers.NETWORK_TYPE_BITMASK to networkType,
         Telephony.Carriers.CARRIER_ENABLED to apnEnable,
@@ -105,7 +100,7 @@
     val isAddApnAllowed: Boolean = true,
     val readOnlyApnTypes: List<String> = emptyList(),
     val readOnlyApnFields: List<String> = emptyList(),
-    val defaultApnTypes: List<String> = emptyList(),
+    val defaultApnTypes: List<String>? = null,
     val defaultApnProtocol: String = "",
     val defaultApnRoamingProtocol: String = "",
 )
@@ -118,19 +113,18 @@
  *
  * @return Initialized CustomizedConfig information.
  */
-fun getApnDataInit(arguments: Bundle, context: Context, uriInit: Uri, subId: Int): ApnData {
-
-    val uriType = arguments.getString(URI_TYPE)!!
+fun getApnDataInit(arguments: Bundle, context: Context, uriInit: Uri, subId: Int): ApnData? {
+    val uriType = arguments.getString(URI_TYPE) ?: return null
 
     if (!uriInit.isPathPrefixMatch(Telephony.Carriers.CONTENT_URI)) {
         Log.e(TAG, "Insert request not for carrier table. Uri: $uriInit")
-        return ApnData() //TODO: finish
+        return null
     }
 
     var apnDataInit = when (uriType) {
         EDIT_URL -> getApnDataFromUri(uriInit, context)
         INSERT_URL -> ApnData()
-        else -> ApnData() //TODO: finish
+        else -> return null
     }
 
     if (uriType == INSERT_URL) {
@@ -143,13 +137,18 @@
     apnDataInit =
         apnDataInit.copy(customizedConfig = getCarrierCustomizedConfig(apnDataInit, configManager))
 
+    if (apnDataInit.newApn) {
+        apnDataInit = apnDataInit.copy(
+            apnType = getPreSelectedApnType(apnDataInit.customizedConfig)
+        )
+    }
+
     apnDataInit = apnDataInit.copy(
         apnEnableEnabled =
         context.resources.getBoolean(R.bool.config_allow_edit_carrier_enabled)
     )
     // TODO: mIsCarrierIdApn
-    disableInit(apnDataInit)
-    return apnDataInit
+    return disableInit(apnDataInit)
 }
 
 /**
@@ -199,53 +198,7 @@
     if (errorMsg == null) {
         errorMsg = isItemExist(apnData, context)
     }
-    if (errorMsg == null) {
-        errorMsg = validateAPNType(
-            true,
-            apnData.apnType,
-            apnData.customizedConfig.readOnlyApnTypes,
-            context
-        )
-    }
-    return errorMsg
-}
-
-private fun getUserEnteredApnType(apnType: String, readOnlyApnTypes: List<String>): String {
-    // if user has not specified a type, map it to "ALL APN TYPES THAT ARE NOT READ-ONLY"
-    // but if user enter empty type, map it just for default
-    var userEnteredApnType = apnType
-    if (userEnteredApnType != "") userEnteredApnType =
-        userEnteredApnType.trim { it <= ' ' }
-    if (TextUtils.isEmpty(userEnteredApnType) || APN_TYPE_ALL == userEnteredApnType) {
-        userEnteredApnType = getEditableApnType(readOnlyApnTypes)
-    }
-    Log.d(
-        TAG, "getUserEnteredApnType: changed apn type to editable apn types: "
-            + userEnteredApnType
-    )
-    return userEnteredApnType
-}
-
-private fun getEditableApnType(readOnlyApnTypes: List<String>): String {
-    val editableApnTypes = StringBuilder()
-    var first = true
-    for (apnType in APN_TYPES) {
-        // add APN type if it is not read-only and is not wild-cardable
-        if (!readOnlyApnTypes.contains(apnType)
-            && apnType != APN_TYPE_IA
-            && apnType != APN_TYPE_EMERGENCY
-            && apnType != APN_TYPE_MCX
-            && apnType != APN_TYPE_IMS
-        ) {
-            if (first) {
-                first = false
-            } else {
-                editableApnTypes.append(",")
-            }
-            editableApnTypes.append(apnType)
-        }
-    }
-    return editableApnTypes.toString()
+    return errorMsg?.apply { Log.d(TAG, "APN data not valid, reason: $this") }
 }
 
 /**
@@ -258,6 +211,10 @@
     apnInit: ApnData,
     configManager: CarrierConfigManager
 ): CustomizedConfig {
+    fun log(message: String) {
+        Log.d(TAG, "getCarrierCustomizedConfig: $message")
+    }
+
     val b = configManager.getConfigForSubId(
         apnInit.subId,
         CarrierConfigManager.KEY_READ_ONLY_APN_TYPES_STRING_ARRAY,
@@ -270,72 +227,61 @@
     val customizedConfig = CustomizedConfig(
         readOnlyApnTypes = b.getStringArray(
             CarrierConfigManager.KEY_READ_ONLY_APN_TYPES_STRING_ARRAY
-        )?.toList() ?: emptyList(), readOnlyApnFields = b.getStringArray(
+        )?.toList() ?: emptyList(),
+        readOnlyApnFields = b.getStringArray(
             CarrierConfigManager.KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY
-        )?.toList() ?: emptyList(), defaultApnTypes = b.getStringArray(
+        )?.toList() ?: emptyList(),
+        defaultApnTypes = b.getStringArray(
             CarrierConfigManager.KEY_APN_SETTINGS_DEFAULT_APN_TYPES_STRING_ARRAY
-        )?.toList() ?: emptyList(), defaultApnProtocol = b.getString(
+        )?.toList(),
+        defaultApnProtocol = b.getString(
             CarrierConfigManager.Apn.KEY_SETTINGS_DEFAULT_PROTOCOL_STRING
-        ) ?: "", defaultApnRoamingProtocol = b.getString(
+        ) ?: "",
+        defaultApnRoamingProtocol = b.getString(
             CarrierConfigManager.Apn.KEY_SETTINGS_DEFAULT_ROAMING_PROTOCOL_STRING
-        ) ?: "", isAddApnAllowed = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL)
+        ) ?: "",
+        isAddApnAllowed = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL),
     )
-    if (!ArrayUtils.isEmpty(customizedConfig.readOnlyApnTypes)) {
-        Log.d(
-            TAG,
-            "getCarrierCustomizedConfig: read only APN type: " + customizedConfig.readOnlyApnTypes.joinToString(
-                ", "
-            )
-        )
+    if (customizedConfig.readOnlyApnTypes.isNotEmpty()) {
+        log("read only APN type: " + customizedConfig.readOnlyApnTypes)
     }
-    if (!ArrayUtils.isEmpty(customizedConfig.defaultApnTypes)) {
-        Log.d(
-            TAG,
-            "getCarrierCustomizedConfig: default apn types: " + customizedConfig.defaultApnTypes.joinToString(
-                ", "
-            )
-        )
+    customizedConfig.defaultApnTypes?.takeIf { it.isNotEmpty() }?.let {
+        log("default apn types: $it")
     }
-    if (!TextUtils.isEmpty(customizedConfig.defaultApnProtocol)) {
-        Log.d(
-            TAG,
-            "getCarrierCustomizedConfig: default apn protocol: ${customizedConfig.defaultApnProtocol}"
-        )
+    if (customizedConfig.defaultApnProtocol.isNotEmpty()) {
+        log("default apn protocol: ${customizedConfig.defaultApnProtocol}")
     }
-    if (!TextUtils.isEmpty(customizedConfig.defaultApnRoamingProtocol)) {
-        Log.d(
-            TAG,
-            "getCarrierCustomizedConfig: default apn roaming protocol: ${customizedConfig.defaultApnRoamingProtocol}"
-        )
+    if (customizedConfig.defaultApnRoamingProtocol.isNotEmpty()) {
+        log("default apn roaming protocol: ${customizedConfig.defaultApnRoamingProtocol}")
     }
     if (!customizedConfig.isAddApnAllowed) {
-        Log.d(TAG, "getCarrierCustomizedConfig: not allow to add new APN")
+        log("not allow to add new APN")
     }
     return customizedConfig
 }
 
-fun disableInit(apnDataInit: ApnData): ApnData {
-    var apnData = apnDataInit
-    val isUserEdited = apnDataInit.edited == Telephony.Carriers.USER_EDITED
-    Log.d(TAG, "disableInit: EDITED $isUserEdited")
+private fun ApnData.isReadOnly(): Boolean {
+    Log.d(TAG, "isReadOnly: edited $edited")
+    if (edited == Telephony.Carriers.USER_EDITED) return false
     // if it's not a USER_EDITED apn, check if it's read-only
-    if (!isUserEdited && (apnDataInit.userEditable == 0
-            || apnTypesMatch(apnDataInit.customizedConfig.readOnlyApnTypes, apnDataInit.apnType))
-    ) {
+    return userEditable == 0 ||
+        ApnTypes.isApnTypeReadOnly(apnType, customizedConfig.readOnlyApnTypes)
+}
+
+fun disableInit(apnDataInit: ApnData): ApnData {
+    if (apnDataInit.isReadOnly()) {
         Log.d(TAG, "disableInit: read-only APN")
-        apnData =
-            apnDataInit.copy(customizedConfig = apnDataInit.customizedConfig.copy(readOnlyApn = true))
-        apnData = disableAllFields(apnData)
-    } else if (!ArrayUtils.isEmpty(apnData.customizedConfig.readOnlyApnFields)) {
-        Log.d(
-            TAG,
-            "disableInit: mReadOnlyApnFields ${
-                apnData.customizedConfig.readOnlyApnFields.joinToString(", ")
-            })"
+        val apnData = apnDataInit.copy(
+            customizedConfig = apnDataInit.customizedConfig.copy(readOnlyApn = true)
         )
-        apnData = disableFields(apnData.customizedConfig.readOnlyApnFields, apnData)
+        return disableAllFields(apnData)
     }
-    return apnData
+    val readOnlyApnFields = apnDataInit.customizedConfig.readOnlyApnFields
+    if (readOnlyApnFields.isNotEmpty()) {
+        Log.d(TAG, "disableInit: readOnlyApnFields $readOnlyApnFields)")
+        return disableFields(readOnlyApnFields, apnDataInit)
+    }
+    return apnDataInit
 }
 
 /**
@@ -402,23 +348,6 @@
     return apnData
 }
 
-private fun apnTypesMatch(apnTypeList: List<String>, apnType: String): Boolean {
-    val normalizeApnTypeList = apnTypeList.map(::normalizeApnType)
-    return hasAllApns(normalizeApnTypeList) ||
-        apnType.split(",").map(::normalizeApnType).all { it in normalizeApnTypeList }
-}
-
-fun hasAllApns(apnTypes: List<String>): Boolean {
-    if (APN_TYPE_ALL in apnTypes) {
-        Log.d(TAG, "hasAllApns: true because apnTypes.contains(APN_TYPE_ALL)")
-        return true
-    }
-    return APN_TYPES.all { it in apnTypes }
-}
-
-private fun normalizeApnType(apnType: String): String =
-    apnType.trim().lowercase(Locale.getDefault())
-
 fun deleteApn(uri: Uri, context: Context) {
     val contentResolver = context.contentResolver
     contentResolver.delete(uri, null, null)
@@ -439,24 +368,3 @@
     return if (validEnabled && (apn == "")) context.resources.getString(R.string.error_apn_empty)
     else null
 }
-
-fun validateAPNType(
-    validEnabled: Boolean,
-    apnType: String,
-    readOnlyApnTypes: List<String>,
-    context: Context
-): String? {
-    // if carrier does not allow editing certain apn types, make sure type does not include those
-    if (validEnabled && !ArrayUtils.isEmpty(readOnlyApnTypes)
-        && apnTypesMatch(
-            readOnlyApnTypes,
-            getUserEnteredApnType(apnType, readOnlyApnTypes)
-        )
-    ) {
-        return String.format(
-            context.resources.getString(R.string.error_adding_apn_type),
-            readOnlyApnTypes.joinToString(", ")
-        )
-    }
-    return null
-}
\ No newline at end of file
diff --git a/src/com/android/settings/network/apn/ApnTypeCheckBox.kt b/src/com/android/settings/network/apn/ApnTypeCheckBox.kt
new file mode 100644
index 0000000..4d0659c
--- /dev/null
+++ b/src/com/android/settings/network/apn/ApnTypeCheckBox.kt
@@ -0,0 +1,53 @@
+/*
+ * 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 com.android.settings.network.apn
+
+import android.telephony.data.ApnSetting
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.stringResource
+import com.android.settings.R
+import com.android.settings.network.apn.ApnTypes.toApnType
+import com.android.settingslib.spa.widget.editor.SettingsDropdownCheckBox
+
+@Composable
+fun ApnTypeCheckBox(
+    apnData: ApnData,
+    onTypeChanged: (String) -> Unit,
+    onMmsSelectedChanged: (Boolean) -> Unit,
+) {
+    val context = LocalContext.current
+    val apnTypeOptions = remember {
+        ApnTypes.getOptions(context, apnData.apnType, apnData.customizedConfig.readOnlyApnTypes)
+    }
+
+    fun updateMmsSelected() {
+        val apnTypeOptionMms = apnTypeOptions.single { it.text == ApnSetting.TYPE_MMS_STRING }
+        onMmsSelectedChanged(apnTypeOptionMms.selected.value)
+    }
+    LaunchedEffect(Unit) { updateMmsSelected() }
+    SettingsDropdownCheckBox(
+        label = stringResource(R.string.apn_type),
+        options = apnTypeOptions,
+        enabled = apnData.apnTypeEnabled,
+    ) {
+        onTypeChanged(apnTypeOptions.toApnType())
+        updateMmsSelected()
+    }
+}
diff --git a/src/com/android/settings/network/apn/ApnTypes.kt b/src/com/android/settings/network/apn/ApnTypes.kt
index d3dbe38..2c8fa2a 100644
--- a/src/com/android/settings/network/apn/ApnTypes.kt
+++ b/src/com/android/settings/network/apn/ApnTypes.kt
@@ -16,128 +16,112 @@
 
 package com.android.settings.network.apn
 
-import androidx.compose.runtime.mutableStateListOf
-import androidx.compose.runtime.snapshots.SnapshotStateList
+import android.content.Context
+import android.telephony.data.ApnSetting
+import android.util.Log
+import android.widget.Toast
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.ui.text.intl.Locale
+import androidx.compose.ui.text.toLowerCase
+import com.android.settings.R
+import com.android.settingslib.spa.widget.editor.SettingsDropdownCheckOption
 
 object ApnTypes {
-    /**
-     * APN types for data connections.  These are usage categories for an APN
-     * entry.  One APN entry may support multiple APN types, eg, a single APN
-     * may service regular internet traffic ("default") as well as MMS-specific
-     * connections.<br></br>
-     * APN_TYPE_ALL is a special type to indicate that this APN entry can
-     * service all data connections.
-     */
-    const val APN_TYPE_ALL = "*"
+    private const val TAG = "ApnTypes"
 
-    /** APN type for default data traffic  */
-    const val APN_TYPE_DEFAULT = "default"
-
-    /** APN type for MMS traffic  */
-    const val APN_TYPE_MMS = "mms"
-
-    /** APN type for SUPL assisted GPS  */
-    const val APN_TYPE_SUPL = "supl"
-
-    /** APN type for DUN traffic  */
-    const val APN_TYPE_DUN = "dun"
-
-    /** APN type for HiPri traffic  */
-    const val APN_TYPE_HIPRI = "hipri"
-
-    /** APN type for FOTA  */
-    const val APN_TYPE_FOTA = "fota"
-
-    /** APN type for IMS  */
-    const val APN_TYPE_IMS = "ims"
-
-    /** APN type for CBS  */
-    const val APN_TYPE_CBS = "cbs"
-
-    /** APN type for IA Initial Attach APN  */
-    const val APN_TYPE_IA = "ia"
-
-    /** APN type for Emergency PDN. This is not an IA apn, but is used
-     * for access to carrier services in an emergency call situation.  */
-    const val APN_TYPE_EMERGENCY = "emergency"
-
-    /** APN type for Mission Critical Services  */
-    const val APN_TYPE_MCX = "mcx"
-
-    /** APN type for XCAP  */
-    const val APN_TYPE_XCAP = "xcap"
-
-    /** APN type for VSIM  */
-    const val APN_TYPE_VSIM = "vsim"
-
-    /** APN type for BIP  */
-    const val APN_TYPE_BIP = "bip"
-
-    /** APN type for ENTERPRISE  */
-    const val APN_TYPE_ENTERPRISE = "enterprise"
-
-    val APN_TYPES = arrayOf(
-        APN_TYPE_DEFAULT,
-        APN_TYPE_MMS,
-        APN_TYPE_SUPL,
-        APN_TYPE_DUN,
-        APN_TYPE_HIPRI,
-        APN_TYPE_FOTA,
-        APN_TYPE_IMS,
-        APN_TYPE_CBS,
-        APN_TYPE_IA,
-        APN_TYPE_EMERGENCY,
-        APN_TYPE_MCX,
-        APN_TYPE_XCAP,
-        APN_TYPE_VSIM,
-        APN_TYPE_BIP,
-        APN_TYPE_ENTERPRISE
+    private val APN_TYPES = arrayOf(
+        ApnSetting.TYPE_DEFAULT_STRING,
+        ApnSetting.TYPE_MMS_STRING,
+        ApnSetting.TYPE_SUPL_STRING,
+        ApnSetting.TYPE_DUN_STRING,
+        ApnSetting.TYPE_HIPRI_STRING,
+        ApnSetting.TYPE_FOTA_STRING,
+        ApnSetting.TYPE_IMS_STRING,
+        ApnSetting.TYPE_CBS_STRING,
+        ApnSetting.TYPE_IA_STRING,
+        ApnSetting.TYPE_EMERGENCY_STRING,
+        ApnSetting.TYPE_MCX_STRING,
+        ApnSetting.TYPE_XCAP_STRING,
+        ApnSetting.TYPE_VSIM_STRING,
+        ApnSetting.TYPE_BIP_STRING,
+        ApnSetting.TYPE_ENTERPRISE_STRING,
     )
 
-    val APN_TYPES_OPTIONS = listOf(APN_TYPE_ALL) + APN_TYPES
-
-    fun getApnTypeSelectedOptionsState(apnType: String): SnapshotStateList<Int> {
-        val apnTypeSelectedOptionsState = mutableStateListOf<Int>()
-        if (apnType.contains(APN_TYPE_ALL))
-            APN_TYPES_OPTIONS.forEachIndexed { index, _ ->
-                apnTypeSelectedOptionsState.add(index)
-            }
-        else {
-            APN_TYPES_OPTIONS.forEachIndexed { index, type ->
-                if (apnType.contains(type)) {
-                    apnTypeSelectedOptionsState.add(index)
-                }
-            }
-            if (apnTypeSelectedOptionsState.size == APN_TYPES.size)
-                apnTypeSelectedOptionsState.add(APN_TYPES_OPTIONS.indexOf(APN_TYPE_ALL))
+    private fun splitToList(apnType: String): List<String> {
+        val types = apnType.split(',').map { it.trim().toLowerCase(Locale.current) }
+        if (ApnSetting.TYPE_ALL_STRING in types || APN_TYPES.all { it in types }) {
+            return listOf(ApnSetting.TYPE_ALL_STRING)
         }
-        return apnTypeSelectedOptionsState
+        return APN_TYPES.filter { it in types }
     }
 
-    fun updateApnType(
-        apnTypeSelectedOptionsState: SnapshotStateList<Int>,
-        defaultApnTypes: List<String>,
-        readOnlyApnTypes: List<String>
-    ): String {
-        val apnType = apnTypeSelectedOptionsState.joinToString { APN_TYPES_OPTIONS[it] }
-        if (apnType.contains(APN_TYPE_ALL)) return APN_TYPE_ALL
-        return if (apnType == "" && defaultApnTypes.isNotEmpty())
-            getEditableApnType(defaultApnTypes, readOnlyApnTypes)
-        else
-            apnType
+    fun isApnTypeReadOnly(apnType: String, readOnlyTypes: List<String>): Boolean {
+        val apnTypes = splitToList(apnType)
+        return ApnSetting.TYPE_ALL_STRING in readOnlyTypes ||
+            ApnSetting.TYPE_ALL_STRING in apnTypes && readOnlyTypes.isNotEmpty() ||
+            apnTypes.any { it in readOnlyTypes }
     }
 
-    private fun getEditableApnType(
-        defaultApnTypes: List<String>,
-        readOnlyApnTypes: List<String>
-    ): String {
-        return defaultApnTypes.filterNot { apnType ->
-            readOnlyApnTypes.contains(apnType) || apnType in listOf(
-                APN_TYPE_IA,
-                APN_TYPE_EMERGENCY,
-                APN_TYPE_MCX,
-                APN_TYPE_IMS,
+    fun getOptions(context: Context, apnType: String, readOnlyTypes: List<String>) = buildList {
+        val apnTypes = splitToList(apnType)
+        add(
+            context.createSettingsDropdownCheckOption(
+                text = ApnSetting.TYPE_ALL_STRING,
+                isSelectAll = true,
+                changeable = readOnlyTypes.isEmpty(),
+                selected = ApnSetting.TYPE_ALL_STRING in apnTypes,
             )
-        }.joinToString()
+        )
+        for (type in APN_TYPES) {
+            add(
+                context.createSettingsDropdownCheckOption(
+                    text = type,
+                    changeable = ApnSetting.TYPE_ALL_STRING !in readOnlyTypes &&
+                        type !in readOnlyTypes,
+                    selected = ApnSetting.TYPE_ALL_STRING in apnTypes || type in apnTypes,
+                )
+            )
+        }
+    }.also { Log.d(TAG, "APN Type options: $it") }
+
+    private fun Context.createSettingsDropdownCheckOption(
+        text: String,
+        isSelectAll: Boolean = false,
+        changeable: Boolean,
+        selected: Boolean,
+    ) = SettingsDropdownCheckOption(
+        text = text,
+        isSelectAll = isSelectAll,
+        changeable = changeable,
+        selected = mutableStateOf(selected),
+    ) {
+        if (!changeable) {
+            val message = resources.getString(R.string.error_adding_apn_type, text)
+            Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
+        }
     }
-}
\ No newline at end of file
+
+    fun List<SettingsDropdownCheckOption>.toApnType(): String {
+        val (selectAllOptions, regularOptions) = partition { it.isSelectAll }
+        for (selectAllOption in selectAllOptions) {
+            if (selectAllOption.selected.value) return ApnSetting.TYPE_ALL_STRING
+        }
+        return regularOptions.filter { it.selected.value }.joinToString(",") { it.text }
+    }
+
+    private val NotPreSelectedTypes = setOf(
+        ApnSetting.TYPE_IMS_STRING,
+        ApnSetting.TYPE_IA_STRING,
+        ApnSetting.TYPE_EMERGENCY_STRING,
+        ApnSetting.TYPE_MCX_STRING,
+    )
+
+    fun getPreSelectedApnType(customizedConfig: CustomizedConfig): String =
+        (customizedConfig.defaultApnTypes
+            ?: defaultPreSelectedApnTypes(customizedConfig.readOnlyApnTypes))
+            .joinToString(",")
+
+    private fun defaultPreSelectedApnTypes(readOnlyApnTypes: List<String>) =
+        if (ApnSetting.TYPE_ALL_STRING in readOnlyApnTypes) emptyList()
+        else APN_TYPES.filter { it !in readOnlyApnTypes + NotPreSelectedTypes }
+}
diff --git a/src/com/android/settings/network/ims/WifiCallingQueryImsState.java b/src/com/android/settings/network/ims/WifiCallingQueryImsState.java
index efa93e5..00d162b 100644
--- a/src/com/android/settings/network/ims/WifiCallingQueryImsState.java
+++ b/src/com/android/settings/network/ims/WifiCallingQueryImsState.java
@@ -27,6 +27,8 @@
 
 import androidx.annotation.VisibleForTesting;
 
+import com.android.settings.network.telephony.wificalling.WifiCallingRepository;
+
 /**
  * Controller class for querying Wifi calling status
  */
@@ -92,7 +94,9 @@
      * Check whether Wifi Calling can be perform or not on this subscription
      *
      * @return true when Wifi Calling can be performed, otherwise false
+     * @deprecated Use {@link WifiCallingRepository#wifiCallingReadyFlow()} instead.
      */
+    @Deprecated
     public boolean isReadyToWifiCalling() {
         if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
             return false;
diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index 56fbcde..56ce9e7 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -19,6 +19,8 @@
 import static androidx.lifecycle.Lifecycle.Event.ON_START;
 import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
 
+import static com.android.settings.network.telephony.EnabledNetworkModePreferenceControllerHelperKt.setAllowedNetworkTypes;
+
 import android.content.Context;
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
@@ -28,10 +30,12 @@
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
 import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
 import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.ListPreference;
 import androidx.preference.ListPreferenceDialogFragmentCompat;
@@ -72,6 +76,7 @@
     private int mCallState = TelephonyManager.CALL_STATE_IDLE;
     private PhoneCallStateTelephonyCallback mTelephonyCallback;
     private FragmentManager mFragmentManager;
+    private LifecycleOwner mViewLifecycleOwner;
 
     public EnabledNetworkModePreferenceController(Context context, String key) {
         super(context, key);
@@ -169,18 +174,15 @@
     }
 
     @Override
-    public boolean onPreferenceChange(Preference preference, Object object) {
+    public boolean onPreferenceChange(@NonNull Preference preference, Object object) {
         final int newPreferredNetworkMode = Integer.parseInt((String) object);
         final ListPreference listPreference = (ListPreference) preference;
+        mBuilder.setPreferenceValueAndSummary(newPreferredNetworkMode);
+        listPreference.setValue(Integer.toString(mBuilder.getSelectedEntryValue()));
+        listPreference.setSummary(mBuilder.getSummary());
 
-        if (mTelephonyManager.setPreferredNetworkTypeBitmask(
-                MobileNetworkUtils.getRafFromNetworkType(newPreferredNetworkMode))) {
-            mBuilder.setPreferenceValueAndSummary(newPreferredNetworkMode);
-            listPreference.setValue(Integer.toString(mBuilder.getSelectedEntryValue()));
-            listPreference.setSummary(mBuilder.getSummary());
-            return true;
-        }
-        return false;
+        setAllowedNetworkTypes(mTelephonyManager, mViewLifecycleOwner, newPreferredNetworkMode);
+        return true;
     }
 
     void init(int subId, FragmentManager fragmentManager) {
@@ -201,6 +203,11 @@
         }
     }
 
+    @Override
+    public void onViewCreated(@NonNull LifecycleOwner viewLifecycleOwner) {
+        mViewLifecycleOwner = viewLifecycleOwner;
+    }
+
     private void updatePreference() {
         if (mPreferenceScreen != null) {
             displayPreference(mPreferenceScreen);
diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerHelper.kt b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerHelper.kt
new file mode 100644
index 0000000..eab5d74
--- /dev/null
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerHelper.kt
@@ -0,0 +1,35 @@
+/*
+ * 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 com.android.settings.network.telephony
+
+import android.telephony.TelephonyManager
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.lifecycleScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+
+fun TelephonyManager.setAllowedNetworkTypes(
+    viewLifecycleOwner: LifecycleOwner,
+    newPreferredNetworkMode: Int,
+) {
+    viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Default) {
+        setAllowedNetworkTypesForReason(
+            TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER,
+            MobileNetworkUtils.getRafFromNetworkType(newPreferredNetworkMode),
+        )
+    }
+}
diff --git a/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivity.java b/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivity.java
new file mode 100644
index 0000000..cb4ab18
--- /dev/null
+++ b/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivity.java
@@ -0,0 +1,95 @@
+/*
+ * 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 com.android.settings.network.telephony;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telephony.SubscriptionManager;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.R;
+
+/** This dialog activity advise the user to have connectivity if the eSIM uses a RAC. */
+public class EuiccRacConnectivityDialogActivity extends SubscriptionActionDialogActivity
+        implements WarningDialogFragment.OnConfirmListener {
+
+    private static final String TAG = "EuiccRacConnectivityDialogActivity";
+    // Dialog tags
+    private static final int DIALOG_TAG_ERASE_ANYWAY_CONFIRMATION = 1;
+
+    private int mSubId;
+
+    /**
+     * Returns an intent of EuiccRacConnectivityDialogActivity.
+     *
+     * @param context The context used to start the EuiccRacConnectivityDialogActivity.
+     * @param subId The subscription ID of the subscription needs to be deleted. If the subscription
+     *     belongs to a group of subscriptions, all subscriptions from the group will be deleted.
+     */
+    @NonNull
+    public static Intent getIntent(@NonNull Context context, int subId) {
+        Intent intent = new Intent(context, EuiccRacConnectivityDialogActivity.class);
+        intent.putExtra(ARG_SUB_ID, subId);
+        return intent;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Intent intent = getIntent();
+        mSubId = intent.getIntExtra(ARG_SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+
+        if (savedInstanceState == null) {
+            showConnectivityWarningDialog();
+        }
+    }
+
+    @Override
+    public void onConfirm(int tag, boolean confirmed) {
+        if (!confirmed) {
+            finish();
+            return;
+        }
+
+        switch (tag) {
+            case DIALOG_TAG_ERASE_ANYWAY_CONFIRMATION:
+                finish();
+                Log.i(TAG, "Show dialogue activity that handles deleting eSIM profiles");
+                startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(this, mSubId));
+                break;
+            default:
+                Log.e(TAG, "Unrecognized confirmation dialog tag: " + tag);
+                break;
+        }
+    }
+
+    /* Displays warning to have connectivity because subscription is RAC dialog. */
+    private void showConnectivityWarningDialog() {
+        WarningDialogFragment.show(
+                this,
+                WarningDialogFragment.OnConfirmListener.class,
+                DIALOG_TAG_ERASE_ANYWAY_CONFIRMATION,
+                getString(R.string.wifi_warning_dialog_title),
+                getString(R.string.wifi_warning_dialog_text),
+                getString(R.string.wifi_warning_continue_button),
+                getString(R.string.wifi_warning_return_button));
+    }
+}
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index 47515d8..8a63505 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -80,6 +80,7 @@
 import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.network.ims.WifiCallingQueryImsState;
 import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
+import com.android.settings.network.telephony.wificalling.WifiCallingRepository;
 import com.android.settingslib.core.instrumentation.Instrumentable;
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 import com.android.settingslib.graph.SignalDrawable;
@@ -928,7 +929,10 @@
 
     /**
      * Copied from WifiCallingPreferenceController#isWifiCallingEnabled()
+     *
+     * @deprecated Use {@link WifiCallingRepository#wifiCallingReadyFlow()} instead.
      */
+    @Deprecated
     public static boolean isWifiCallingEnabled(Context context, int subId,
             @Nullable WifiCallingQueryImsState queryImsState) {
         if (queryImsState == null) {
diff --git a/src/com/android/settings/network/telephony/SubscriptionRepository.kt b/src/com/android/settings/network/telephony/SubscriptionRepository.kt
index 7a14d6b..ee4ac1e 100644
--- a/src/com/android/settings/network/telephony/SubscriptionRepository.kt
+++ b/src/com/android/settings/network/telephony/SubscriptionRepository.kt
@@ -18,12 +18,16 @@
 
 import android.content.Context
 import android.telephony.SubscriptionManager
+import android.util.Log
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.asExecutor
 import kotlinx.coroutines.channels.awaitClose
 import kotlinx.coroutines.flow.callbackFlow
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.onEach
+
+private const val TAG = "SubscriptionRepository"
 
 fun Context.subscriptionsChangedFlow() = callbackFlow {
     val subscriptionManager = getSystemService(SubscriptionManager::class.java)!!
@@ -40,4 +44,4 @@
     )
 
     awaitClose { subscriptionManager.removeOnSubscriptionsChangedListener(listener) }
-}.conflate().flowOn(Dispatchers.Default)
+}.conflate().onEach { Log.d(TAG, "subscriptions changed") }.flowOn(Dispatchers.Default)
diff --git a/src/com/android/settings/network/telephony/WarningDialogFragment.java b/src/com/android/settings/network/telephony/WarningDialogFragment.java
new file mode 100644
index 0000000..58bc1da
--- /dev/null
+++ b/src/com/android/settings/network/telephony/WarningDialogFragment.java
@@ -0,0 +1,148 @@
+/*
+ * 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 com.android.settings.network.telephony;
+
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.settings.R;
+
+/** Fragment to show a warning dialog. The caller should implement onConfirmListener. */
+public class WarningDialogFragment extends BaseDialogFragment
+        implements DialogInterface.OnClickListener {
+    private static final String TAG = "WarningDialogFragment";
+    private static final String ARG_TITLE = "title";
+    private static final String ARG_MSG = "msg";
+    private static final String ARG_POS_BUTTON_STRING = "pos_button_string";
+    private static final String ARG_NEG_BUTTON_STRING = "neg_button_string";
+
+    /**
+     * Interface defining the method that will be invoked when the user has done with the dialog.
+     */
+    public interface OnConfirmListener {
+        /**
+         * @param tag The tag in the caller.
+         * @param confirmed True if the user has clicked the positive button. False if the user has
+         *     clicked the negative button or cancel the dialog.
+         */
+        void onConfirm(int tag, boolean confirmed);
+    }
+
+    /** Displays a confirmation dialog which has confirm and cancel buttons. */
+    static <T> void show(
+            FragmentActivity activity,
+            Class<T> callbackInterfaceClass,
+            int tagInCaller,
+            String title,
+            String msg,
+            String posButtonString,
+            String negButtonString) {
+        WarningDialogFragment fragment = new WarningDialogFragment();
+        Bundle arguments = new Bundle();
+        arguments.putString(ARG_TITLE, title);
+        arguments.putCharSequence(ARG_MSG, msg);
+        arguments.putString(ARG_POS_BUTTON_STRING, posButtonString);
+        arguments.putString(ARG_NEG_BUTTON_STRING, negButtonString);
+        setListener(activity, null, callbackInterfaceClass, tagInCaller, arguments);
+        fragment.setArguments(arguments);
+        fragment.show(activity.getSupportFragmentManager(), TAG);
+    }
+
+    @Override
+    @NonNull
+    public final Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        String title = getArguments().getString(ARG_TITLE);
+        String message = getArguments().getString(ARG_MSG);
+        String leftButton = getArguments().getString(ARG_POS_BUTTON_STRING);
+        String rightButton = getArguments().getString(ARG_NEG_BUTTON_STRING);
+
+        Log.i(TAG, "Showing dialog with title =" + title);
+        AlertDialog.Builder builder =
+                new AlertDialog.Builder(getContext())
+                        .setPositiveButton(rightButton, this)
+                        .setNegativeButton(leftButton, this);
+
+        View content =
+                LayoutInflater.from(getContext())
+                        .inflate(R.layout.sim_warning_dialog_wifi_connectivity, null);
+
+        if (content != null) {
+            TextView dialogTitle = content.findViewById(R.id.title);
+            if (!TextUtils.isEmpty(title) && dialogTitle != null) {
+                dialogTitle.setText(title);
+                dialogTitle.setVisibility(View.VISIBLE);
+            }
+            TextView dialogMessage = content.findViewById(R.id.msg);
+            if (!TextUtils.isEmpty(message) && dialogMessage != null) {
+                dialogMessage.setText(message);
+                dialogMessage.setVisibility(View.VISIBLE);
+            }
+
+            builder.setView(content);
+        } else {
+            if (!TextUtils.isEmpty(title)) {
+                builder.setTitle(title);
+            }
+            if (!TextUtils.isEmpty(message)) {
+                builder.setMessage(message);
+            }
+        }
+
+        AlertDialog dialog = builder.create();
+        dialog.setCanceledOnTouchOutside(false);
+        return dialog;
+    }
+
+    @Override
+    public void onClick(@NonNull DialogInterface dialog, int which) {
+        Log.i(TAG, "dialog onClick =" + which);
+
+        // Positions of the buttons have been switch:
+        // negative button = left button = the button to continue
+        informCaller(which == DialogInterface.BUTTON_NEGATIVE);
+    }
+
+    @Override
+    public void onCancel(@NonNull DialogInterface dialog) {
+        informCaller(false);
+    }
+
+    private void informCaller(boolean confirmed) {
+        OnConfirmListener listener;
+        try {
+            listener = getListener(OnConfirmListener.class);
+        } catch (IllegalArgumentException e) {
+            Log.e(TAG, "Do nothing and return.", e);
+            return;
+        }
+        if (listener == null) {
+            return;
+        }
+        listener.onConfirm(getTagInCaller(), confirmed);
+    }
+}
diff --git a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.kt b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.kt
index e7b8318..b0ea6a6 100644
--- a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.kt
+++ b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.kt
@@ -29,8 +29,7 @@
 import androidx.preference.Preference
 import androidx.preference.PreferenceScreen
 import com.android.settings.R
-import com.android.settings.network.telephony.ims.ImsMmTelRepository
-import com.android.settings.network.telephony.ims.ImsMmTelRepositoryImpl
+import com.android.settings.network.telephony.wificalling.WifiCallingRepository
 import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.Flow
@@ -46,8 +45,8 @@
     context: Context,
     key: String,
     private val callStateFlowFactory: (subId: Int) -> Flow<Int> = context::callStateFlow,
-    private val imsMmTelRepositoryFactory: (subId: Int) -> ImsMmTelRepository = { subId ->
-        ImsMmTelRepositoryImpl(context, subId)
+    private val wifiCallingRepositoryFactory: (subId: Int) -> WifiCallingRepository = { subId ->
+        WifiCallingRepository(context, subId)
     },
 ) : TelephonyBasePreferenceController(context, key) {
 
@@ -81,15 +80,11 @@
     }
 
     override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
-        viewLifecycleOwner.lifecycleScope.launch {
-            viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
-                val isVisible = withContext(Dispatchers.Default) {
-                    MobileNetworkUtils.isWifiCallingEnabled(mContext, mSubId, null)
-                }
-                preference.isVisible = isVisible
-                callingPreferenceCategoryController.updateChildVisible(preferenceKey, isVisible)
+        wifiCallingRepositoryFactory(mSubId).wifiCallingReadyFlow()
+            .collectLatestWithLifecycle(viewLifecycleOwner) {
+                preference.isVisible = it
+                callingPreferenceCategoryController.updateChildVisible(preferenceKey, it)
             }
-        }
 
         viewLifecycleOwner.lifecycleScope.launch {
             viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
@@ -123,7 +118,7 @@
     }
 
     private fun getSummaryForWfcMode(): String {
-        val resId = when (imsMmTelRepositoryFactory(mSubId).getWiFiCallingMode()) {
+        val resId = when (wifiCallingRepositoryFactory(mSubId).getWiFiCallingMode()) {
             ImsMmTelManager.WIFI_MODE_WIFI_ONLY ->
                 com.android.internal.R.string.wfc_mode_wifi_only_summary
 
diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.kt b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.kt
index 1ed9d9a..d709574 100644
--- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.kt
+++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.kt
@@ -80,8 +80,6 @@
     @VisibleForTesting
     var progressDialog: ProgressDialog? = null
 
-    private lateinit var preference: Preference
-
     private var subId by notNull<Int>()
 
     /**
@@ -99,11 +97,6 @@
         if (MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext, subId)) AVAILABLE
         else CONDITIONALLY_UNAVAILABLE
 
-    override fun displayPreference(screen: PreferenceScreen) {
-        super.displayPreference(screen)
-        preference = screen.findPreference(preferenceKey)!!
-    }
-
     @Composable
     override fun Content() {
         val coroutineScope = rememberCoroutineScope()
diff --git a/src/com/android/settings/network/telephony/ims/ImsFeatureProvisionedFlow.kt b/src/com/android/settings/network/telephony/ims/ImsFeatureProvisionedFlow.kt
new file mode 100644
index 0000000..6769498
--- /dev/null
+++ b/src/com/android/settings/network/telephony/ims/ImsFeatureProvisionedFlow.kt
@@ -0,0 +1,83 @@
+/*
+ * 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 com.android.settings.network.telephony.ims
+
+import android.telephony.ims.ProvisioningManager
+import android.telephony.ims.ProvisioningManager.FeatureProvisioningCallback
+import android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability
+import android.telephony.ims.stub.ImsRegistrationImplBase.ImsRegistrationTech
+import android.util.Log
+import androidx.annotation.VisibleForTesting
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.asExecutor
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.catch
+import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.onEach
+
+private const val TAG = "ImsFeatureProvisioned"
+
+fun imsFeatureProvisionedFlow(
+    subId: Int,
+    @MmTelCapability capability: Int,
+    @ImsRegistrationTech tech: Int,
+): Flow<Boolean> = imsFeatureProvisionedFlow(
+    subId = subId,
+    capability = capability,
+    tech = tech,
+    provisioningManager = ProvisioningManager.createForSubscriptionId(subId),
+)
+
+@VisibleForTesting
+fun imsFeatureProvisionedFlow(
+    subId: Int,
+    @MmTelCapability capability: Int,
+    @ImsRegistrationTech tech: Int,
+    provisioningManager : ProvisioningManager,
+): Flow<Boolean> = callbackFlow {
+    val callback = object : FeatureProvisioningCallback() {
+        override fun onFeatureProvisioningChanged(
+            receivedCapability: Int,
+            receivedTech: Int,
+            isProvisioned: Boolean,
+        ) {
+            if (capability == receivedCapability && tech == receivedTech) trySend(isProvisioned)
+        }
+
+        override fun onRcsFeatureProvisioningChanged(
+            capability: Int,
+            tech: Int,
+            isProvisioned: Boolean,
+        ) {
+        }
+    }
+
+    provisioningManager.registerFeatureProvisioningChangedCallback(
+        Dispatchers.Default.asExecutor(),
+        callback,
+    )
+    trySend(provisioningManager.getProvisioningStatusForCapability(capability, tech))
+
+    awaitClose { provisioningManager.unregisterFeatureProvisioningChangedCallback(callback) }
+}.catch { e ->
+    Log.w(TAG, "[$subId] error while imsFeatureProvisionedFlow", e)
+}.conflate().onEach {
+    Log.d(TAG, "[$subId] changed: capability=$capability tech=$tech isProvisioned=$it")
+}.flowOn(Dispatchers.Default)
diff --git a/src/com/android/settings/network/telephony/ims/ImsMmTelRepository.kt b/src/com/android/settings/network/telephony/ims/ImsMmTelRepository.kt
index 3408eb7..822c20a 100644
--- a/src/com/android/settings/network/telephony/ims/ImsMmTelRepository.kt
+++ b/src/com/android/settings/network/telephony/ims/ImsMmTelRepository.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +17,33 @@
 package com.android.settings.network.telephony.ims
 
 import android.content.Context
-import android.telephony.CarrierConfigManager
-import android.telephony.CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL
-import android.telephony.TelephonyManager
+import android.telephony.AccessNetworkConstants
 import android.telephony.ims.ImsManager
 import android.telephony.ims.ImsMmTelManager
 import android.telephony.ims.ImsMmTelManager.WiFiCallingMode
+import android.telephony.ims.ImsStateCallback
+import android.telephony.ims.feature.MmTelFeature
 import android.util.Log
+import kotlin.coroutines.resume
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.asExecutor
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.catch
+import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.suspendCancellableCoroutine
+import kotlinx.coroutines.withContext
 
 interface ImsMmTelRepository {
     @WiFiCallingMode
-    fun getWiFiCallingMode(): Int
+    fun getWiFiCallingMode(useRoamingMode: Boolean): Int
+    fun imsReadyFlow(): Flow<Boolean>
+    suspend fun isSupported(
+        @MmTelFeature.MmTelCapabilities.MmTelCapability capability: Int,
+        @AccessNetworkConstants.TransportType transportType: Int,
+    ): Boolean
 }
 
 class ImsMmTelRepositoryImpl(
@@ -36,30 +52,61 @@
     private val imsMmTelManager: ImsMmTelManager = ImsManager(context).getImsMmTelManager(subId),
 ) : ImsMmTelRepository {
 
-    private val telephonyManager = context.getSystemService(TelephonyManager::class.java)!!
-        .createForSubscriptionId(subId)
-
-    private val carrierConfigManager = context.getSystemService(CarrierConfigManager::class.java)!!
-
     @WiFiCallingMode
-    override fun getWiFiCallingMode(): Int = try {
+    override fun getWiFiCallingMode(useRoamingMode: Boolean): Int = try {
         when {
             !imsMmTelManager.isVoWiFiSettingEnabled -> ImsMmTelManager.WIFI_MODE_UNKNOWN
-
-            telephonyManager.isNetworkRoaming && !useWfcHomeModeForRoaming() ->
-                imsMmTelManager.getVoWiFiRoamingModeSetting()
-
+            useRoamingMode -> imsMmTelManager.getVoWiFiRoamingModeSetting()
             else -> imsMmTelManager.getVoWiFiModeSetting()
         }
     } catch (e: IllegalArgumentException) {
-        Log.w(TAG, "getWiFiCallingMode failed subId=$subId", e)
+        Log.w(TAG, "[$subId] getWiFiCallingMode failed useRoamingMode=$useRoamingMode", e)
         ImsMmTelManager.WIFI_MODE_UNKNOWN
     }
 
-    private fun useWfcHomeModeForRoaming(): Boolean =
-        carrierConfigManager
-            .getConfigForSubId(subId, KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL)
-            .getBoolean(KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL)
+    override fun imsReadyFlow(): Flow<Boolean> = callbackFlow {
+        val callback = object : ImsStateCallback() {
+            override fun onAvailable() {
+                Log.d(TAG, "[$subId] IMS onAvailable")
+                trySend(true)
+            }
+
+            override fun onError() {
+                Log.d(TAG, "[$subId] IMS onError")
+                trySend(false)
+            }
+
+            override fun onUnavailable(reason: Int) {
+                Log.d(TAG, "[$subId] IMS onUnavailable")
+                trySend(false)
+            }
+        }
+
+        imsMmTelManager.registerImsStateCallback(Dispatchers.Default.asExecutor(), callback)
+
+        awaitClose { imsMmTelManager.unregisterImsStateCallback(callback) }
+    }.catch { e ->
+        Log.w(TAG, "[$subId] error while imsReadyFlow", e)
+    }.conflate().flowOn(Dispatchers.Default)
+
+    override suspend fun isSupported(
+        @MmTelFeature.MmTelCapabilities.MmTelCapability capability: Int,
+        @AccessNetworkConstants.TransportType transportType: Int,
+    ): Boolean = withContext(Dispatchers.Default) {
+        suspendCancellableCoroutine { continuation ->
+            try {
+                imsMmTelManager.isSupported(
+                    capability,
+                    transportType,
+                    Dispatchers.Default.asExecutor(),
+                    continuation::resume,
+                )
+            } catch (e: Exception) {
+                continuation.resume(false)
+                Log.w(TAG, "[$subId] isSupported failed", e)
+            }
+        }.also { Log.d(TAG, "[$subId] isSupported = $it") }
+    }
 
     private companion object {
         private const val TAG = "ImsMmTelRepository"
diff --git a/src/com/android/settings/network/telephony/wificalling/WifiCallingRepository.kt b/src/com/android/settings/network/telephony/wificalling/WifiCallingRepository.kt
new file mode 100644
index 0000000..ac95404
--- /dev/null
+++ b/src/com/android/settings/network/telephony/wificalling/WifiCallingRepository.kt
@@ -0,0 +1,85 @@
+/*
+ * 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 com.android.settings.network.telephony.wificalling
+
+import android.content.Context
+import android.telephony.AccessNetworkConstants
+import android.telephony.CarrierConfigManager
+import android.telephony.CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL
+import android.telephony.SubscriptionManager
+import android.telephony.TelephonyManager
+import android.telephony.ims.ImsMmTelManager.WiFiCallingMode
+import android.telephony.ims.feature.MmTelFeature
+import android.telephony.ims.stub.ImsRegistrationImplBase
+import com.android.settings.network.telephony.ims.ImsMmTelRepository
+import com.android.settings.network.telephony.ims.ImsMmTelRepositoryImpl
+import com.android.settings.network.telephony.ims.imsFeatureProvisionedFlow
+import com.android.settings.network.telephony.subscriptionsChangedFlow
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.map
+
+class WifiCallingRepository(
+    private val context: Context,
+    private val subId: Int,
+    private val imsMmTelRepository : ImsMmTelRepository = ImsMmTelRepositoryImpl(context, subId)
+) {
+    private val telephonyManager = context.getSystemService(TelephonyManager::class.java)!!
+        .createForSubscriptionId(subId)
+
+    private val carrierConfigManager = context.getSystemService(CarrierConfigManager::class.java)!!
+
+    @WiFiCallingMode
+    fun getWiFiCallingMode(): Int {
+        val useRoamingMode = telephonyManager.isNetworkRoaming && !useWfcHomeModeForRoaming()
+        return imsMmTelRepository.getWiFiCallingMode(useRoamingMode)
+    }
+
+    private fun useWfcHomeModeForRoaming(): Boolean =
+        carrierConfigManager
+            .getConfigForSubId(subId, KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL)
+            .getBoolean(KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL)
+
+    @OptIn(ExperimentalCoroutinesApi::class)
+    fun wifiCallingReadyFlow(): Flow<Boolean> {
+        if (!SubscriptionManager.isValidSubscriptionId(subId)) return flowOf(false)
+        return context.subscriptionsChangedFlow().flatMapLatest {
+            combine(
+                imsFeatureProvisionedFlow(
+                    subId = subId,
+                    capability = MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+                    tech = ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN,
+                ),
+                isWifiCallingSupportedFlow(),
+            ) { imsFeatureProvisioned, isWifiCallingSupported ->
+                imsFeatureProvisioned && isWifiCallingSupported
+            }
+        }
+    }
+
+    private fun isWifiCallingSupportedFlow(): Flow<Boolean> {
+        return imsMmTelRepository.imsReadyFlow().map { imsReady ->
+            imsReady && imsMmTelRepository.isSupported(
+                capability = MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+                transportType = AccessNetworkConstants.TRANSPORT_TYPE_WLAN,
+            )
+        }
+    }
+}
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index dfb4a45..8e6019c 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -272,6 +272,16 @@
         }
     }
 
+    public ParceledListSlice<NotificationChannelGroup> getGroupsWithRecentBlockedFilter(String pkg,
+            int uid) {
+        try {
+            return sINM.getRecentBlockedNotificationChannelGroupsForPackage(pkg, uid);
+        } catch (Exception e) {
+            Log.w(TAG, "Error calling NoMan", e);
+            return ParceledListSlice.emptyList();
+        }
+    }
+
     public ParceledListSlice<ConversationChannelWrapper> getConversations(String pkg, int uid) {
         try {
             return sINM.getConversationsForPackage(pkg, uid);
diff --git a/src/com/android/settings/notification/app/AppNotificationSettings.java b/src/com/android/settings/notification/app/AppNotificationSettings.java
index ee9ec45..89756b7 100644
--- a/src/com/android/settings/notification/app/AppNotificationSettings.java
+++ b/src/com/android/settings/notification/app/AppNotificationSettings.java
@@ -16,10 +16,16 @@
 
 package com.android.settings.notification.app;
 
+import static com.android.server.notification.Flags.notificationHideUnusedChannels;
+
+
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
@@ -33,6 +39,8 @@
     private static final String TAG = "AppNotificationSettings";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
+    boolean mShowAll = false;
+
     @Override
     public int getMetricsCategory() {
         return SettingsEnums.NOTIFICATION_APP_NOTIFICATION;
@@ -101,4 +109,36 @@
         mControllers.add(new DeletedChannelsPreferenceController(context, mBackend));
         return new ArrayList<>(mControllers);
     }
+
+    private final int SHOW_ALL_CHANNELS = 1;
+
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        if (notificationHideUnusedChannels()) {
+            menu.add(Menu.NONE, SHOW_ALL_CHANNELS, Menu.NONE,
+                    mShowAll ? R.string.hide_unused_channels : R.string.show_unused_channels);
+        }
+        super.onCreateOptionsMenu(menu, inflater);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (!notificationHideUnusedChannels()) {
+            return super.onOptionsItemSelected(item);
+        }
+        switch (item.getItemId()) {
+            case SHOW_ALL_CHANNELS:
+                mShowAll = !mShowAll;
+                item.setTitle(mShowAll
+                        ? R.string.hide_unused_channels
+                        : R.string.show_unused_channels);
+                ChannelListPreferenceController list =
+                        use(ChannelListPreferenceController.class);
+                list.setShowAll(mShowAll);
+                list.updateState(findPreference(list.getPreferenceKey()));
+                return true;
+            default:
+                return super.onOptionsItemSelected(item);
+        }
+    }
 }
diff --git a/src/com/android/settings/notification/app/ChannelListPreferenceController.java b/src/com/android/settings/notification/app/ChannelListPreferenceController.java
index c919633..7077592 100644
--- a/src/com/android/settings/notification/app/ChannelListPreferenceController.java
+++ b/src/com/android/settings/notification/app/ChannelListPreferenceController.java
@@ -18,6 +18,7 @@
 
 import static android.app.NotificationManager.IMPORTANCE_LOW;
 import static android.app.NotificationManager.IMPORTANCE_NONE;
+import static com.android.server.notification.Flags.notificationHideUnusedChannels;
 
 import android.app.NotificationChannel;
 import android.app.NotificationChannelGroup;
@@ -58,6 +59,8 @@
     private List<NotificationChannelGroup> mChannelGroupList;
     private PreferenceCategory mPreference;
 
+    private boolean mShowAll;
+
     public ChannelListPreferenceController(Context context, NotificationBackend backend) {
         super(context, backend);
     }
@@ -96,7 +99,16 @@
         new AsyncTask<Void, Void, Void>() {
             @Override
             protected Void doInBackground(Void... unused) {
-                mChannelGroupList = mBackend.getGroups(mAppRow.pkg, mAppRow.uid).getList();
+                if (notificationHideUnusedChannels()) {
+                    if (mShowAll) {
+                        mChannelGroupList = mBackend.getGroups(mAppRow.pkg, mAppRow.uid).getList();
+                    } else {
+                        mChannelGroupList = mBackend.getGroupsWithRecentBlockedFilter(mAppRow.pkg,
+                                mAppRow.uid).getList();
+                    }
+                } else {
+                    mChannelGroupList = mBackend.getGroups(mAppRow.pkg, mAppRow.uid).getList();
+                }
                 Collections.sort(mChannelGroupList, CHANNEL_GROUP_COMPARATOR);
                 return null;
             }
@@ -111,6 +123,10 @@
         }.execute();
     }
 
+    protected void setShowAll(boolean showAll) {
+        mShowAll = showAll;
+    }
+
     /**
      * Update the preferences group to match the
      * @param groupPrefsList
diff --git a/src/com/android/settings/notification/zen/ZenAccessSettings.java b/src/com/android/settings/notification/zen/ZenAccessSettings.java
index 418a571..f765d6d 100644
--- a/src/com/android/settings/notification/zen/ZenAccessSettings.java
+++ b/src/com/android/settings/notification/zen/ZenAccessSettings.java
@@ -39,8 +39,8 @@
 import com.android.settings.applications.specialaccess.zenaccess.ZenAccessSettingObserverMixin;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.widget.EmptyTextSettings;
+import com.android.settings.widget.RestrictedAppPreference;
 import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.widget.AppPreference;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -122,7 +122,7 @@
         for (ApplicationInfo app : apps) {
             final String pkg = app.packageName;
             final CharSequence label = app.loadLabel(mPkgMan);
-            final AppPreference pref = new AppPreference(getPrefContext());
+            final RestrictedAppPreference pref = new RestrictedAppPreference(getPrefContext());
             pref.setKey(pkg);
             pref.setIcon(app.loadIcon(mPkgMan));
             pref.setTitle(label);
@@ -133,6 +133,8 @@
             } else {
                 // Not auto approved, update summary according to notification backend.
                 pref.setSummary(getPreferenceSummary(pkg));
+                pref.checkEcmRestrictionAndSetDisabled(
+                        android.Manifest.permission.MANAGE_NOTIFICATIONS, app.packageName);
             }
             pref.setOnPreferenceClickListener(preference -> {
                 AppInfoBase.startAppInfoFragment(
diff --git a/src/com/android/settings/overlay/FeatureFactory.kt b/src/com/android/settings/overlay/FeatureFactory.kt
index 37507a8..2c4a295 100644
--- a/src/com/android/settings/overlay/FeatureFactory.kt
+++ b/src/com/android/settings/overlay/FeatureFactory.kt
@@ -24,6 +24,7 @@
 import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider
 import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider
 import com.android.settings.bluetooth.BluetoothFeatureProvider
+import com.android.settings.connecteddevice.audiosharing.AudioSharingFeatureProvider
 import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider
 import com.android.settings.connecteddevice.stylus.StylusFeatureProvider
 import com.android.settings.dashboard.DashboardFeatureProvider
@@ -182,6 +183,11 @@
      */
     abstract val displayFeatureProvider: DisplayFeatureProvider
 
+    /**
+     * Gets implementation for audio sharing related feature.
+     */
+    abstract val audioSharingFeatureProvider: AudioSharingFeatureProvider
+
     companion object {
         private var _factory: FeatureFactory? = null
 
diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.kt b/src/com/android/settings/overlay/FeatureFactoryImpl.kt
index e0313b7..e1519b3 100644
--- a/src/com/android/settings/overlay/FeatureFactoryImpl.kt
+++ b/src/com/android/settings/overlay/FeatureFactoryImpl.kt
@@ -34,6 +34,8 @@
 import com.android.settings.biometrics2.factory.BiometricsRepositoryProviderImpl
 import com.android.settings.bluetooth.BluetoothFeatureProvider
 import com.android.settings.bluetooth.BluetoothFeatureProviderImpl
+import com.android.settings.connecteddevice.audiosharing.AudioSharingFeatureProvider
+import com.android.settings.connecteddevice.audiosharing.AudioSharingFeatureProviderImpl
 import com.android.settings.connecteddevice.dock.DockUpdaterFeatureProviderImpl
 import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider
 import com.android.settings.connecteddevice.fastpair.FastPairFeatureProviderImpl
@@ -192,7 +194,12 @@
     override val privateSpaceLoginFeatureProvider: PrivateSpaceLoginFeatureProvider by lazy {
         PrivateSpaceLoginFeatureProviderImpl()
     }
+
     override val displayFeatureProvider: DisplayFeatureProvider by lazy {
         DisplayFeatureProviderImpl()
     }
+
+    override val audioSharingFeatureProvider: AudioSharingFeatureProvider by lazy {
+        AudioSharingFeatureProviderImpl()
+    }
 }
diff --git a/src/com/android/settings/privatespace/AutoAdvanceSetupFragment.java b/src/com/android/settings/privatespace/AutoAdvanceSetupFragment.java
index 13c0681..74e8431 100644
--- a/src/com/android/settings/privatespace/AutoAdvanceSetupFragment.java
+++ b/src/com/android/settings/privatespace/AutoAdvanceSetupFragment.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.privatespace;
 
+import static android.text.Layout.BREAK_STRATEGY_SIMPLE;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
@@ -60,10 +62,10 @@
             ImmutableList.of(
                     new Pair(R.string.private_space_notifications_hidden_title,
                             R.drawable.private_space_setup_notification_illustration),
-                    new Pair(R.string.private_space_share_photos_title,
-                            R.drawable.private_space_setup_sharing_illustration),
                     new Pair(R.string.private_space_apps_installed_title,
-                            R.drawable.private_space_setup_preinstalled_illustration));
+                            R.drawable.private_space_setup_preinstalled_illustration),
+                    new Pair(R.string.private_space_explore_settings_title,
+                            R.drawable.private_space_setup_sharing_illustration));
 
     private Runnable mUpdateScreenResources =
             new Runnable() {
@@ -118,6 +120,7 @@
                 (GlifLayout)
                         inflater.inflate(R.layout.private_space_advancing_screen, container, false);
         mRootView.getHeaderTextView().setMaxLines(HEADER_TEXT_MAX_LINES);
+        mRootView.getHeaderTextView().setBreakStrategy(BREAK_STRATEGY_SIMPLE);
         updateHeaderAndImage();
         mHandler = new Handler(Looper.getMainLooper());
         mHandler.postDelayed(mUpdateScreenResources, DELAY_BETWEEN_SCREENS);
diff --git a/src/com/android/settings/privatespace/HidePrivateSpaceSensitiveNotificationsController.java b/src/com/android/settings/privatespace/HidePrivateSpaceSensitiveNotificationsController.java
new file mode 100644
index 0000000..1a89d37
--- /dev/null
+++ b/src/com/android/settings/privatespace/HidePrivateSpaceSensitiveNotificationsController.java
@@ -0,0 +1,105 @@
+/*
+ * 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 com.android.settings.privatespace;
+
+import static android.provider.Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.core.TogglePreferenceController;
+
+import java.util.Objects;
+
+/**
+ * A controller object for sensitive notifications in Private Space settings page.
+ */
+public class HidePrivateSpaceSensitiveNotificationsController extends TogglePreferenceController {
+    private final PrivateSpaceMaintainer mPrivateSpaceMaintainer;
+    private final UserHandle mPrivateProfileId;
+    public static final int ENABLED = 1;
+    public static final int DISABLED = 0;
+    private static final int DEVICE_SENSITIVE_NOTIFICATIONS_DEFAULT = ENABLED;
+    private static final int DEVICE_LOCK_SCREEN_NOTIFICATIONS_DEFAULT = ENABLED;
+    private static final int PRIVATE_SPACE_SENSITIVE_NOTIFICATIONS_DEFAULT = DISABLED;
+
+    public HidePrivateSpaceSensitiveNotificationsController(@NonNull Context context,
+            @NonNull String preferenceKey) {
+        super(context, preferenceKey);
+        mPrivateSpaceMaintainer = PrivateSpaceMaintainer.getInstance(context);
+        mPrivateProfileId = Objects.requireNonNull(
+                mPrivateSpaceMaintainer.getPrivateProfileHandle());
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (!android.os.Flags.allowPrivateProfile()
+                || !android.multiuser.Flags.enablePsSensitiveNotificationsToggle()
+                || !mPrivateSpaceMaintainer.doesPrivateSpaceExist()) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        if (!getLockscreenNotificationsEnabled(mContext)
+                || !getLockscreenSensitiveNotificationsEnabledOnDevice(mContext)) {
+            return DISABLED_DEPENDENT_SETTING;
+        }
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean isChecked() {
+        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                PRIVATE_SPACE_SENSITIVE_NOTIFICATIONS_DEFAULT, mPrivateProfileId.getIdentifier())
+                != DISABLED;
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                isChecked ? ENABLED : DISABLED, mPrivateProfileId.getIdentifier());
+        return true;
+    }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return 0;
+    }
+
+    /**
+     * If notifications are disabled on the device, the toggle for private space sensitive
+     * notifications should be unavailable.
+     */
+    private static boolean getLockscreenNotificationsEnabled(Context context) {
+        return Settings.Secure.getInt(context.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+                DEVICE_LOCK_SCREEN_NOTIFICATIONS_DEFAULT) != DISABLED;
+    }
+
+    /**
+     * If sensitive notifications are hidden on the device, they should be hidden for private space
+     * also.
+     */
+    private static boolean getLockscreenSensitiveNotificationsEnabledOnDevice(Context context) {
+        return Settings.Secure.getInt(context.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                DEVICE_SENSITIVE_NOTIFICATIONS_DEFAULT) != DISABLED;
+    }
+}
diff --git a/src/com/android/settings/privatespace/PrivateSpaceAuthenticationActivity.java b/src/com/android/settings/privatespace/PrivateSpaceAuthenticationActivity.java
index 149c0d6..63b1dc9 100644
--- a/src/com/android/settings/privatespace/PrivateSpaceAuthenticationActivity.java
+++ b/src/com/android/settings/privatespace/PrivateSpaceAuthenticationActivity.java
@@ -18,6 +18,8 @@
 
 import static android.app.admin.DevicePolicyManager.ACTION_SET_NEW_PASSWORD;
 
+import static com.android.internal.app.SetScreenLockDialogActivity.LAUNCH_REASON_PRIVATE_SPACE_SETTINGS_ACCESS;
+
 import android.app.ActivityOptions;
 import android.app.AlertDialog;
 import android.app.KeyguardManager;
@@ -37,6 +39,7 @@
 import androidx.fragment.app.FragmentActivity;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.app.SetScreenLockDialogActivity;
 import com.android.settings.R;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settingslib.transition.SettingsTransitionHelper;
@@ -112,23 +115,31 @@
 
     private void promptToSetDeviceLock() {
         Log.d(TAG, "Show prompt to set device lock before using private space feature");
-        new AlertDialog.Builder(this)
-                .setTitle(R.string.no_device_lock_title)
-                .setMessage(R.string.no_device_lock_summary)
-                .setPositiveButton(
-                        R.string.no_device_lock_action_label,
-                        (DialogInterface dialog, int which) -> {
-                            Log.d(TAG, "Start activity to set new device lock");
-                            mSetDeviceLock.launch(new Intent(ACTION_SET_NEW_PASSWORD));
-                        })
-                .setNegativeButton(
-                        R.string.no_device_lock_cancel,
-                        (DialogInterface dialog, int which) -> finish())
-                .setOnCancelListener(
-                        (DialogInterface dialog) -> {
-                            finish();
-                        })
-                .show();
+        if (android.multiuser.Flags.showSetScreenLockDialog()) {
+            Intent setScreenLockPromptIntent =
+                    SetScreenLockDialogActivity
+                            .createBaseIntent(LAUNCH_REASON_PRIVATE_SPACE_SETTINGS_ACCESS);
+            startActivity(setScreenLockPromptIntent);
+            finish();
+        } else {
+            new AlertDialog.Builder(this)
+                    .setTitle(R.string.no_device_lock_title)
+                    .setMessage(R.string.no_device_lock_summary)
+                    .setPositiveButton(
+                            R.string.no_device_lock_action_label,
+                            (DialogInterface dialog, int which) -> {
+                                Log.d(TAG, "Start activity to set new device lock");
+                                mSetDeviceLock.launch(new Intent(ACTION_SET_NEW_PASSWORD));
+                            })
+                    .setNegativeButton(
+                            R.string.no_device_lock_cancel,
+                            (DialogInterface dialog, int which) -> finish())
+                    .setOnCancelListener(
+                            (DialogInterface dialog) -> {
+                                finish();
+                            })
+                    .show();
+        }
     }
 
     private KeyguardManager getKeyguardManager() {
diff --git a/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java b/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java
index a283147..2d38ae2 100644
--- a/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java
+++ b/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java
@@ -45,6 +45,7 @@
 import java.util.List;
 
 // TODO(b/293569406): Update the javadoc when we have the setup flow in place to create PS
+
 /** A class to help with the creation / deletion of Private Space */
 public class PrivateSpaceMaintainer {
     private static final String TAG = "PrivateSpaceMaintainer";
@@ -65,9 +66,9 @@
     public static final int PRIVATE_SPACE_AUTO_LOCK_DEFAULT_VAL = PRIVATE_SPACE_AUTO_LOCK_NEVER;
 
     public enum ErrorDeletingPrivateSpace {
-            DELETE_PS_ERROR_NONE,
-            DELETE_PS_ERROR_NO_PRIVATE_SPACE,
-            DELETE_PS_ERROR_INTERNAL
+        DELETE_PS_ERROR_NONE,
+        DELETE_PS_ERROR_NO_PRIVATE_SPACE,
+        DELETE_PS_ERROR_INTERNAL
     }
 
     /**
@@ -90,7 +91,7 @@
         if (mUserHandle == null) {
             try {
                 mUserHandle = mUserManager.createProfile(
-                                userName, USER_TYPE_PROFILE_PRIVATE, new ArraySet<>());
+                        userName, USER_TYPE_PROFILE_PRIVATE, new ArraySet<>());
             } catch (Exception e) {
                 Log.e(TAG, "Error creating private space", e);
                 return false;
@@ -117,7 +118,8 @@
         return true;
     }
 
-    /** Returns the {@link ErrorDeletingPrivateSpace} enum representing the result of operation.
+    /**
+     * Returns the {@link ErrorDeletingPrivateSpace} enum representing the result of operation.
      *
      * <p> This method should be used ONLY by the delete-PS controller in the PS Settings page.
      */
@@ -212,6 +214,7 @@
 
 
     // TODO(b/307281644): Remove this method once new auth change is merged
+
     /**
      * Returns true if private space exists and a separate private profile lock is set
      * otherwise false when the private space does not exit or exists but does not have a
@@ -290,9 +293,20 @@
         return false;
     }
 
+    @GuardedBy("this")
     private void resetPrivateSpaceSettings() {
         setHidePrivateSpaceEntryPointSetting(HIDE_PRIVATE_SPACE_ENTRY_POINT_DISABLED_VAL);
         setPrivateSpaceAutoLockSetting(PRIVATE_SPACE_AUTO_LOCK_DEFAULT_VAL);
+        setPrivateSpaceSensitiveNotificationsDefaultValue();
+    }
+
+    /** Sets private space sensitive notifications hidden on lockscreen by default */
+    @GuardedBy("this")
+    private void setPrivateSpaceSensitiveNotificationsDefaultValue() {
+        Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                HidePrivateSpaceSensitiveNotificationsController.DISABLED,
+                mUserHandle.getIdentifier());
     }
 
     /**
diff --git a/src/com/android/settings/search/SearchFeatureProvider.java b/src/com/android/settings/search/SearchFeatureProvider.java
index 0741ce4..b1d04d4 100644
--- a/src/com/android/settings/search/SearchFeatureProvider.java
+++ b/src/com/android/settings/search/SearchFeatureProvider.java
@@ -56,7 +56,7 @@
      * @throws IllegalArgumentException when caller is null
      * @throws SecurityException        when caller is not allowed to launch search result page
      */
-    void verifyLaunchSearchResultPageCaller(Context context, @NonNull ComponentName caller)
+    void verifyLaunchSearchResultPageCaller(@NonNull Context context, @NonNull String callerPackage)
             throws SecurityException, IllegalArgumentException;
 
     /**
diff --git a/src/com/android/settings/search/SearchFeatureProviderImpl.java b/src/com/android/settings/search/SearchFeatureProviderImpl.java
index 6f90970..3a62ddf 100644
--- a/src/com/android/settings/search/SearchFeatureProviderImpl.java
+++ b/src/com/android/settings/search/SearchFeatureProviderImpl.java
@@ -17,13 +17,14 @@
 
 package com.android.settings.search;
 
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.provider.Settings;
 import android.text.TextUtils;
 
+import androidx.annotation.NonNull;
+
 import com.android.settingslib.search.SearchIndexableResources;
 import com.android.settingslib.search.SearchIndexableResourcesMobile;
 
@@ -32,21 +33,18 @@
  */
 public class SearchFeatureProviderImpl implements SearchFeatureProvider {
 
-    private static final String TAG = "SearchFeatureProvider";
-
     private SearchIndexableResources mSearchIndexableResources;
 
     @Override
-    public void verifyLaunchSearchResultPageCaller(Context context, ComponentName caller) {
-        if (caller == null) {
+    public void verifyLaunchSearchResultPageCaller(@NonNull Context context,
+            @NonNull String callerPackage) {
+        if (TextUtils.isEmpty(callerPackage)) {
             throw new IllegalArgumentException("ExternalSettingsTrampoline intents "
                     + "must be called with startActivityForResult");
         }
-        final String packageName = caller.getPackageName();
-        final boolean isSettingsPackage = TextUtils.equals(packageName, context.getPackageName())
-                || TextUtils.equals(getSettingsIntelligencePkgName(context), packageName);
-        final boolean isAllowlistedPackage =
-                isSignatureAllowlisted(context, caller.getPackageName());
+        final boolean isSettingsPackage = TextUtils.equals(callerPackage, context.getPackageName())
+                || TextUtils.equals(getSettingsIntelligencePkgName(context), callerPackage);
+        final boolean isAllowlistedPackage = isSignatureAllowlisted(context, callerPackage);
         if (isSettingsPackage || isAllowlistedPackage) {
             return;
         }
diff --git a/src/com/android/settings/search/SearchResultTrampoline.java b/src/com/android/settings/search/SearchResultTrampoline.java
index 5d897af..04d9db5 100644
--- a/src/com/android/settings/search/SearchResultTrampoline.java
+++ b/src/com/android/settings/search/SearchResultTrampoline.java
@@ -21,7 +21,6 @@
 import static com.android.settings.activityembedding.EmbeddedDeepLinkUtils.getTrampolineIntent;
 
 import android.app.Activity;
-import android.content.ComponentName;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
@@ -53,11 +52,11 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        final ComponentName callingActivity = getCallingActivity();
+        final String callerPackage = getLaunchedFromPackage();
         // First make sure caller has privilege to launch a search result page.
         FeatureFactory.getFeatureFactory()
                 .getSearchFeatureProvider()
-                .verifyLaunchSearchResultPageCaller(this, callingActivity);
+                .verifyLaunchSearchResultPageCaller(this, callerPackage);
         // Didn't crash, proceed and launch the result as a subsetting.
         Intent intent = getIntent();
         final String highlightMenuKey = intent.getStringExtra(
@@ -106,7 +105,7 @@
         if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)
                 || ActivityEmbeddingUtils.isAlreadyEmbedded(this)) {
             startActivity(intent);
-        } else if (isSettingsIntelligence(callingActivity)) {
+        } else if (isSettingsIntelligence(callerPackage)) {
             if (FeatureFlagUtils.isEnabled(this, FeatureFlags.SETTINGS_SEARCH_ALWAYS_EXPAND)) {
                 startActivity(getTrampolineIntent(intent, highlightMenuKey)
                         .setClass(this, DeepLinkHomepageActivityInternal.class)
@@ -139,9 +138,9 @@
         finish();
     }
 
-    private boolean isSettingsIntelligence(ComponentName callingActivity) {
-        return callingActivity != null && TextUtils.equals(
-                callingActivity.getPackageName(),
+    private boolean isSettingsIntelligence(String callerPackage) {
+        return TextUtils.equals(
+                callerPackage,
                 FeatureFactory.getFeatureFactory().getSearchFeatureProvider()
                         .getSettingsIntelligencePkgName(this));
     }
diff --git a/src/com/android/settings/spa/SettingsSpaEnvironment.kt b/src/com/android/settings/spa/SettingsSpaEnvironment.kt
index 41852e5..568188f 100644
--- a/src/com/android/settings/spa/SettingsSpaEnvironment.kt
+++ b/src/com/android/settings/spa/SettingsSpaEnvironment.kt
@@ -29,6 +29,7 @@
 import com.android.settings.spa.app.backgroundinstall.BackgroundInstalledAppsPageProvider
 import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider
 import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider
+import com.android.settings.spa.app.specialaccess.BackupTasksAppsListProvider
 import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider
 import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider
 import com.android.settings.spa.app.specialaccess.LongBackgroundTasksAppListProvider
@@ -55,6 +56,7 @@
 import com.android.settings.spa.system.AppLanguagesPageProvider
 import com.android.settings.spa.system.LanguageAndInputPageProvider
 import com.android.settings.spa.system.SystemMainPageProvider
+import com.android.settings.wifi.details2.WifiPrivacyPageProvider
 import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository
 import com.android.settingslib.spa.framework.common.SpaEnvironment
 import com.android.settingslib.spa.framework.common.SpaLogger
@@ -79,6 +81,7 @@
             NfcTagAppsSettingsProvider,
             LongBackgroundTasksAppListProvider,
             TurnScreenOnAppsAppListProvider,
+            BackupTasksAppsListProvider,
         )
     }
 
@@ -120,6 +123,7 @@
         SimOnboardingPageProvider,
         BatteryOptimizationModeAppListPageProvider,
         NetworkCellularGroupProvider,
+        WifiPrivacyPageProvider,
     )
 
     override val logger = if (FeatureFlagUtils.isEnabled(
diff --git a/src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt b/src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt
index 695e114..c12915c 100644
--- a/src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt
+++ b/src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt
@@ -38,6 +38,7 @@
 import com.android.settings.spa.SpaActivity.Companion.startSpaActivity
 import com.android.settings.spa.app.appcompat.UserAspectRatioAppPreference
 import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider
+import com.android.settings.spa.app.specialaccess.BackupTasksAppsListProvider
 import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider
 import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider
 import com.android.settings.spa.app.specialaccess.ModifySystemSettingsAppListProvider
@@ -169,6 +170,9 @@
             if (Flags.enableVoiceActivationAppsInSettings()) {
                 VoiceActivationAppsListProvider.InfoPageEntryItem(app)
             }
+            if (Flags.enablePerformBackupTasksInSettings()) {
+                BackupTasksAppsListProvider.InfoPageEntryItem(app)
+            }
         }
 
         Category(title = stringResource(R.string.app_install_details_group_title)) {
diff --git a/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt b/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt
index 7f7d8c5..1ed5959 100644
--- a/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt
+++ b/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt
@@ -17,6 +17,7 @@
 package com.android.settings.spa.app.appinfo
 
 import android.app.AppOpsManager
+import android.app.ecm.EnhancedConfirmationManager
 import android.content.Context
 import android.content.pm.ApplicationInfo
 import android.os.UserManager
@@ -90,12 +91,18 @@
 
 private fun ApplicationInfo.allowRestrictedSettings(context: Context, onSuccess: () -> Unit) {
     AppInfoDashboardFragment.showLockScreen(context) {
-        context.appOpsManager.setMode(
-            AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS,
-            uid,
-            packageName,
-            AppOpsManager.MODE_ALLOWED,
-        )
+        if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()
+                && android.security.Flags.extendEcmToAllSettings()) {
+            val manager = context.getSystemService(EnhancedConfirmationManager::class.java)!!
+            manager.clearRestriction(packageName)
+        } else {
+            context.appOpsManager.setMode(
+                AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS,
+                uid,
+                packageName,
+                AppOpsManager.MODE_ALLOWED,
+            )
+        }
         onSuccess()
         val toastString = context.getString(
             R.string.toast_allows_restricted_settings_successfully,
@@ -137,7 +144,7 @@
         )
     }
     val shouldShowAccessRestrictedSettingsDeferred = async {
-        shouldShowAccessRestrictedSettings(context.appOpsManager)
+        shouldShowAccessRestrictedSettings(context)
     }
     val isProfileOrDeviceOwner =
         Utils.isProfileOrDeviceOwner(context.userManager, context.devicePolicyManager, packageName)
@@ -169,7 +176,14 @@
     .filter { it.id != userId }
     .any { packageManagers.isPackageInstalledAsUser(packageName, it.id) }
 
-private fun ApplicationInfo.shouldShowAccessRestrictedSettings(appOpsManager: AppOpsManager) =
-    appOpsManager.noteOpNoThrow(
-        AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, uid, packageName, null, null
-    ) == AppOpsManager.MODE_IGNORED
+private fun ApplicationInfo.shouldShowAccessRestrictedSettings(context: Context): Boolean {
+    return if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()
+            && android.security.Flags.extendEcmToAllSettings()) {
+        val manager = context.getSystemService(EnhancedConfirmationManager::class.java)!!
+        manager.isClearRestrictionAllowed(packageName)
+    } else {
+        context.appOpsManager.noteOpNoThrow(
+            AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, uid, packageName, null, null
+        ) == AppOpsManager.MODE_IGNORED
+    }
+}
diff --git a/src/com/android/settings/spa/app/specialaccess/BackupTasksApps.kt b/src/com/android/settings/spa/app/specialaccess/BackupTasksApps.kt
new file mode 100644
index 0000000..d6d8fd4
--- /dev/null
+++ b/src/com/android/settings/spa/app/specialaccess/BackupTasksApps.kt
@@ -0,0 +1,54 @@
+/*
+ * 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 com.android.settings.spa.app.specialaccess
+
+import android.Manifest
+import android.app.AppOpsManager
+import android.app.settings.SettingsEnums
+import android.content.Context
+import com.android.settings.R
+import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
+import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
+import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
+import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
+
+object BackupTasksAppsListProvider : TogglePermissionAppListProvider {
+    override val permissionType = "BackupTasksApps"
+    override fun createModel(context: Context) = BackupTasksAppsListModel(context)
+}
+
+class BackupTasksAppsListModel(context: Context) : AppOpPermissionListModel(context) {
+    override val pageTitleResId = R.string.run_backup_tasks_title
+    override val switchTitleResId = R.string.run_backup_tasks_switch_title
+    override val footerResId = R.string.run_backup_tasks_footer_title
+    override val appOp = AppOpsManager.OP_RUN_BACKUP_JOBS
+    override val permission = Manifest.permission.RUN_BACKUP_JOBS
+    override val setModeByUid = true
+
+    override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {
+        super.setAllowed(record, newAllowed)
+        logPermissionChange(newAllowed)
+    }
+
+    private fun logPermissionChange(newAllowed: Boolean) {
+        featureFactory.metricsFeatureProvider.action(
+            context,
+            SettingsEnums.ACTION_RUN_BACKUP_TASKS_TOGGLE,
+            if (newAllowed) 1 else 0
+        )
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceController.kt b/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceController.kt
new file mode 100644
index 0000000..8d6de4e
--- /dev/null
+++ b/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceController.kt
@@ -0,0 +1,38 @@
+/*
+ * 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 com.android.settings.spa.app.specialaccess
+
+import android.content.Context
+import androidx.preference.Preference
+import com.android.settings.core.BasePreferenceController
+import com.android.settings.flags.Flags
+import com.android.settings.spa.SpaActivity.Companion.startSpaActivity
+
+class BackupTasksAppsPreferenceController(context: Context, preferenceKey: String) :
+        BasePreferenceController(context, preferenceKey) {
+    override fun getAvailabilityStatus() =
+        if (Flags.enablePerformBackupTasksInSettings()) AVAILABLE
+        else CONDITIONALLY_UNAVAILABLE
+
+    override fun handlePreferenceTreeClick(preference: Preference): Boolean {
+        if (preference.key == mPreferenceKey) {
+            mContext.startSpaActivity(BackupTasksAppsListProvider.getAppListRoute())
+            return true
+        }
+        return false
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/spa/app/specialaccess/SpecialAppAccess.kt b/src/com/android/settings/spa/app/specialaccess/SpecialAppAccess.kt
index 0285b74..4f79173 100644
--- a/src/com/android/settings/spa/app/specialaccess/SpecialAppAccess.kt
+++ b/src/com/android/settings/spa/app/specialaccess/SpecialAppAccess.kt
@@ -71,6 +71,7 @@
                 WifiControlAppListProvider,
                 LongBackgroundTasksAppListProvider,
                 TurnScreenOnAppsAppListProvider,
+                BackupTasksAppsListProvider,
             )
             .map { it.buildAppListInjectEntry().setLink(fromPage = owner).build() }
     }
diff --git a/src/com/android/settings/spa/preference/ComposePreferenceController.kt b/src/com/android/settings/spa/preference/ComposePreferenceController.kt
index 9dd8282..5ba1d24 100644
--- a/src/com/android/settings/spa/preference/ComposePreferenceController.kt
+++ b/src/com/android/settings/spa/preference/ComposePreferenceController.kt
@@ -24,7 +24,7 @@
 abstract class ComposePreferenceController(context: Context, preferenceKey: String) :
     BasePreferenceController(context, preferenceKey) {
 
-    private lateinit var preference: ComposePreference
+    protected lateinit var preference: ComposePreference
 
     override fun displayPreference(screen: PreferenceScreen) {
         super.displayPreference(screen)
diff --git a/src/com/android/settings/utils/ManagedServiceSettings.java b/src/com/android/settings/utils/ManagedServiceSettings.java
index d5f0040..9f5fbc5 100644
--- a/src/com/android/settings/utils/ManagedServiceSettings.java
+++ b/src/com/android/settings/utils/ManagedServiceSettings.java
@@ -37,14 +37,14 @@
 import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.Fragment;
 import androidx.preference.PreferenceScreen;
-import androidx.preference.TwoStatePreference;
 
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.widget.EmptyTextSettings;
+import com.android.settingslib.RestrictedSwitchPreference;
 import com.android.settingslib.applications.ServiceListing;
-import com.android.settingslib.widget.AppSwitchPreference;
+import com.android.settingslib.widget.TwoTargetPreference;
 
 import java.util.List;
 
@@ -121,10 +121,12 @@
             }
             final CharSequence finalTitle = title;
             final String summary = service.loadLabel(mPm).toString();
-            final TwoStatePreference pref = new AppSwitchPreference(getPrefContext());
+            final RestrictedSwitchPreference pref =
+                    new RestrictedSwitchPreference(getPrefContext());
             pref.setPersistent(false);
             pref.setIcon(mIconDrawableFactory.getBadgedIcon(service, service.applicationInfo,
                     UserHandle.getUserId(service.applicationInfo.uid)));
+            pref.setIconSize(TwoTargetPreference.ICON_SIZE_MEDIUM);
             if (title != null && !title.equals(summary)) {
                 pref.setTitle(title);
                 pref.setSummary(summary);
@@ -150,6 +152,9 @@
                 }
             });
             pref.setKey(cn.flattenToString());
+            if (!pref.isChecked()) {
+                pref.checkEcmRestrictionAndSetDisabled(mConfig.permission, service.packageName);
+            }
             screen.addPreference(pref);
         }
         highlightPreferenceIfNeeded();
diff --git a/src/com/android/settings/widget/CardPreference.kt b/src/com/android/settings/widget/CardPreference.kt
index 7122ac6..010d7de 100644
--- a/src/com/android/settings/widget/CardPreference.kt
+++ b/src/com/android/settings/widget/CardPreference.kt
@@ -61,6 +61,9 @@
     /** The visibility of secondary button on tips card. The default value is `false`. */
     var secondaryButtonVisibility: Boolean = false
 
+    var onClick: (() -> Unit)? = null
+
+    /** The callback for click on card preference itself. */
     private var onDismiss: (() -> Unit)? = null
 
     /** Enable the dismiss button on tips card. */
@@ -84,9 +87,10 @@
                     buttons = listOfNotNull(configPrimaryButton(), configSecondaryButton()),
                     onDismiss = onDismiss,
                     imageVector =
-                        iconResId
-                            ?.takeIf { it != Resources.ID_NULL }
-                            ?.let { ImageVector.vectorResource(it) },
+                    iconResId
+                        ?.takeIf { it != Resources.ID_NULL }
+                        ?.let { ImageVector.vectorResource(it) },
+                    onClick = onClick,
                 )
             )
         }
diff --git a/src/com/android/settings/widget/RestrictedAppPreference.java b/src/com/android/settings/widget/RestrictedAppPreference.java
index f93b935..c76a5de 100644
--- a/src/com/android/settings/widget/RestrictedAppPreference.java
+++ b/src/com/android/settings/widget/RestrictedAppPreference.java
@@ -21,6 +21,7 @@
 import android.text.TextUtils;
 import android.util.AttributeSet;
 
+import androidx.annotation.NonNull;
 import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceViewHolder;
 
@@ -72,10 +73,18 @@
 
     @Override
     public void setEnabled(boolean enabled) {
-        if (isDisabledByAdmin() && enabled) {
-            return;
+        boolean changed = false;
+        if (enabled && isDisabledByAdmin()) {
+            mHelper.setDisabledByAdmin(null);
+            changed = true;
         }
-        super.setEnabled(enabled);
+        if (enabled && isDisabledByEcm()) {
+            mHelper.setDisabledByEcm(null);
+            changed = true;
+        }
+        if (!changed) {
+            super.setEnabled(enabled);
+        }
     }
 
     public void setDisabledByAdmin(RestrictedLockUtils.EnforcedAdmin admin) {
@@ -88,6 +97,10 @@
         return mHelper.isDisabledByAdmin();
     }
 
+    public boolean isDisabledByEcm() {
+        return mHelper.isDisabledByEcm();
+    }
+
     public void useAdminDisabledSummary(boolean useSummary) {
         mHelper.useAdminDisabledSummary(useSummary);
     }
@@ -112,4 +125,15 @@
     public void checkRestrictionAndSetDisabled(String userRestriction, int userId) {
         mHelper.checkRestrictionAndSetDisabled(userRestriction, userId);
     }
+
+    /**
+     * Checks if the given setting is subject to Enhanced Confirmation Mode restrictions for this
+     * package. Marks the preference as disabled if so.
+     * @param settingIdentifier The key identifying the setting
+     * @param packageName the package to check the settingIdentifier for
+     */
+    public void checkEcmRestrictionAndSetDisabled(@NonNull String settingIdentifier,
+                                                  @NonNull String packageName) {
+        mHelper.checkEcmRestrictionAndSetDisabled(settingIdentifier, packageName);
+    }
 }
diff --git a/src/com/android/settings/wifi/WepNetworksPreferenceController.kt b/src/com/android/settings/wifi/WepNetworksPreferenceController.kt
index fca75a9..c84e79a 100644
--- a/src/com/android/settings/wifi/WepNetworksPreferenceController.kt
+++ b/src/com/android/settings/wifi/WepNetworksPreferenceController.kt
@@ -39,16 +39,9 @@
 class WepNetworksPreferenceController(context: Context, preferenceKey: String) :
     ComposePreferenceController(context, preferenceKey) {
 
-    private lateinit var preference: Preference
-
     var wifiManager = context.getSystemService(WifiManager::class.java)!!
 
-    override fun displayPreference(screen: PreferenceScreen) {
-        super.displayPreference(screen)
-        preference = screen.findPreference(preferenceKey)!!
-    }
-
-    override fun getAvailabilityStatus() = if (Flags.wepUsage()) AVAILABLE
+    override fun getAvailabilityStatus() = if (Flags.androidVWifiApi()) AVAILABLE
     else UNSUPPORTED_ON_DEVICE
 
     @Composable
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 1627056..5d45cb2 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -276,7 +276,7 @@
         mDoNotProvideEapUserCertString =
             mContext.getString(R.string.wifi_do_not_provide_eap_user_cert);
 
-        if (Flags.wepUsage() && mAccessPointSecurity == WifiEntry.SECURITY_WEP) {
+        if (Flags.androidVWifiApi() && mAccessPointSecurity == WifiEntry.SECURITY_WEP) {
             LinearLayout wepWarningLayout =
                     (LinearLayout) mView.findViewById(R.id.wep_warning_layout);
             wepWarningLayout.setVisibility(View.VISIBLE);
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 6a6244b..7c9b1d1 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -289,7 +289,7 @@
             mContext.getString(R.string.wifi_do_not_provide_eap_user_cert);
         mInstallCertsString = mContext.getString(R.string.wifi_install_credentials);
 
-        if (Flags.wepUsage() && mWifiEntrySecurity == WifiEntry.SECURITY_WEP) {
+        if (Flags.androidVWifiApi() && mWifiEntrySecurity == WifiEntry.SECURITY_WEP) {
             LinearLayout wepWarningLayout =
                     (LinearLayout) mView.findViewById(R.id.wep_warning_layout);
             wepWarningLayout.setVisibility(View.VISIBLE);
diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
index 0384f0d..e1774e3 100644
--- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
+++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
@@ -58,6 +58,7 @@
 import com.android.settings.wifi.details2.WifiAutoConnectPreferenceController2;
 import com.android.settings.wifi.details2.WifiDetailPreferenceController2;
 import com.android.settings.wifi.details2.WifiMeteredPreferenceController2;
+import com.android.settings.wifi.details2.WifiPrivacyPreferenceController;
 import com.android.settings.wifi.details2.WifiPrivacyPreferenceController2;
 import com.android.settings.wifi.details2.WifiSecondSummaryController2;
 import com.android.settings.wifi.details2.WifiSubscriptionDetailPreferenceController2;
@@ -119,6 +120,13 @@
     }
 
     @Override
+    public void onAttach(@NonNull Context context) {
+        super.onAttach(context);
+        use(WifiPrivacyPreferenceController.class)
+                .setWifiEntryKey(getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
+    }
+
+    @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         setIfOnlyAvailableForAdmins(true);
diff --git a/src/com/android/settings/wifi/details2/WifiPrivacyPageProvider.kt b/src/com/android/settings/wifi/details2/WifiPrivacyPageProvider.kt
new file mode 100644
index 0000000..e41863c
--- /dev/null
+++ b/src/com/android/settings/wifi/details2/WifiPrivacyPageProvider.kt
@@ -0,0 +1,203 @@
+/*
+ * 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 com.android.settings.wifi.details2
+
+import android.content.Context
+import android.net.wifi.WifiConfiguration
+import android.net.wifi.WifiManager
+import android.os.Bundle
+import android.os.Handler
+import android.os.HandlerThread
+import android.os.Looper
+import android.os.Process
+import android.os.SimpleClock
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.width
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableIntStateOf
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.saveable.rememberSaveable
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalLifecycleOwner
+import androidx.compose.ui.res.stringArrayResource
+import androidx.compose.ui.res.stringResource
+import androidx.navigation.NavType
+import androidx.navigation.navArgument
+import com.android.settings.R
+import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
+import com.android.settingslib.spa.framework.common.SettingsPageProvider
+import com.android.settingslib.spa.framework.theme.SettingsDimension
+import com.android.settingslib.spa.widget.preference.ListPreferenceModel
+import com.android.settingslib.spa.widget.preference.ListPreferenceOption
+import com.android.settingslib.spa.widget.preference.RadioPreferences
+import com.android.settingslib.spa.widget.preference.SwitchPreference
+import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
+import com.android.settingslib.spa.widget.scaffold.RegularScaffold
+import com.android.settingslib.spa.widget.ui.CategoryTitle
+import com.android.wifitrackerlib.WifiEntry
+import java.time.Clock
+import java.time.ZoneOffset
+
+const val WIFI_ENTRY_KEY = "wifiEntryKey"
+
+object WifiPrivacyPageProvider : SettingsPageProvider {
+    override val name = "WifiPrivacy"
+    const val TAG = "WifiPrivacyPageProvider"
+
+    override val parameter = listOf(
+        navArgument(WIFI_ENTRY_KEY) { type = NavType.StringType },
+    )
+
+    @Composable
+    override fun Page(arguments: Bundle?) {
+        val wifiEntryKey = arguments!!.getString(WIFI_ENTRY_KEY)
+        if (wifiEntryKey != null) {
+            val context = LocalContext.current
+            val lifecycle = LocalLifecycleOwner.current.lifecycle
+            val wifiEntry = remember {
+                getWifiEntry(context, wifiEntryKey, lifecycle)
+            }
+            WifiPrivacyPage(wifiEntry)
+        }
+    }
+
+    fun getRoute(
+        wifiEntryKey: String,
+    ): String = "${name}/$wifiEntryKey"
+}
+
+@Composable
+fun WifiPrivacyPage(wifiEntry: WifiEntry) {
+    val isSelectable: Boolean = wifiEntry.canSetPrivacy()
+    RegularScaffold(
+        title = stringResource(id = R.string.wifi_privacy_settings)
+    ) {
+        Column {
+            val title = stringResource(id = R.string.wifi_privacy_mac_settings)
+            val wifiPrivacyEntries = stringArrayResource(R.array.wifi_privacy_entries)
+            val wifiPrivacyValues = stringArrayResource(R.array.wifi_privacy_values)
+            val textsSelectedId = rememberSaveable { mutableIntStateOf(wifiEntry.privacy) }
+            val dataList = remember {
+                wifiPrivacyEntries.mapIndexed { index, text ->
+                    ListPreferenceOption(id = wifiPrivacyValues[index].toInt(), text = text)
+                }
+            }
+            RadioPreferences(remember {
+                object : ListPreferenceModel {
+                    override val title = title
+                    override val options = dataList
+                    override val selectedId = textsSelectedId
+                    override val onIdSelected: (Int) -> Unit = {
+                        textsSelectedId.intValue = it
+                        onSelectedChange(wifiEntry, it)
+                    }
+                    override val enabled = { isSelectable }
+                }
+            })
+            wifiEntry.wifiConfiguration?.let {
+                DeviceNameSwitchPreference(it)
+            }
+        }
+    }
+}
+
+@Composable
+fun DeviceNameSwitchPreference(wifiConfiguration: WifiConfiguration){
+    Spacer(modifier = Modifier.width(SettingsDimension.itemDividerHeight))
+    CategoryTitle(title = stringResource(R.string.wifi_privacy_device_name_settings))
+    Spacer(modifier = Modifier.width(SettingsDimension.itemDividerHeight))
+    var checked by remember {
+        mutableStateOf(wifiConfiguration.isSendDhcpHostnameEnabled)
+    }
+    val context = LocalContext.current
+    val wifiManager = context.getSystemService(WifiManager::class.java)!!
+    SwitchPreference(object : SwitchPreferenceModel {
+        override val title =
+            context.resources.getString(
+                R.string.wifi_privacy_send_device_name_toggle_title
+            )
+        override val summary =
+            {
+                context.resources.getString(
+                    R.string.wifi_privacy_send_device_name_toggle_summary
+                )
+            }
+        override val checked = { checked }
+        override val onCheckedChange: (Boolean) -> Unit = { newChecked ->
+            wifiConfiguration.isSendDhcpHostnameEnabled = newChecked
+            wifiManager.save(wifiConfiguration, null /* listener */)
+            checked = newChecked
+        }
+    })
+}
+
+fun onSelectedChange(wifiEntry: WifiEntry, privacy: Int) {
+    if (wifiEntry.privacy == privacy) {
+        // Prevent disconnection + reconnection if settings not changed.
+        return
+    }
+    wifiEntry.setPrivacy(privacy)
+
+    // To activate changing, we need to reconnect network. WiFi will auto connect to
+    // current network after disconnect(). Only needed when this is connected network.
+
+    // To activate changing, we need to reconnect network. WiFi will auto connect to
+    // current network after disconnect(). Only needed when this is connected network.
+    if (wifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) {
+        wifiEntry.disconnect(null /* callback */)
+        wifiEntry.connect(null /* callback */)
+    }
+}
+
+fun getWifiEntry(
+    context: Context,
+    wifiEntryKey: String,
+    liftCycle: androidx.lifecycle.Lifecycle
+): WifiEntry {
+    // Max age of tracked WifiEntries
+    val MAX_SCAN_AGE_MILLIS: Long = 15000
+    // Interval between initiating SavedNetworkTracker scans
+    val SCAN_INTERVAL_MILLIS: Long = 10000
+    val mWorkerThread = HandlerThread(
+        WifiPrivacyPageProvider.TAG,
+        Process.THREAD_PRIORITY_BACKGROUND
+    )
+    mWorkerThread.start()
+    val elapsedRealtimeClock: Clock = object : SimpleClock(ZoneOffset.UTC) {
+        override fun millis(): Long {
+            return android.os.SystemClock.elapsedRealtime()
+        }
+    }
+    val mNetworkDetailsTracker = featureFactory
+        .wifiTrackerLibProvider
+        .createNetworkDetailsTracker(
+            liftCycle,
+            context,
+            Handler(Looper.getMainLooper()),
+            mWorkerThread.getThreadHandler(),
+            elapsedRealtimeClock,
+            MAX_SCAN_AGE_MILLIS,
+            SCAN_INTERVAL_MILLIS,
+            wifiEntryKey
+        )
+    return mNetworkDetailsTracker.wifiEntry
+}
diff --git a/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController.kt b/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController.kt
new file mode 100644
index 0000000..42741e3
--- /dev/null
+++ b/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController.kt
@@ -0,0 +1,66 @@
+/*
+ * 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 com.android.settings.wifi.details2
+
+import android.content.Context
+import android.net.wifi.WifiManager
+import androidx.compose.material3.Icon
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.res.vectorResource
+import com.android.settings.R
+import com.android.settings.spa.SpaActivity.Companion.startSpaActivity
+import com.android.settings.spa.preference.ComposePreferenceController
+import com.android.settingslib.spa.widget.preference.Preference
+import com.android.settingslib.spa.widget.preference.PreferenceModel
+import com.android.wifi.flags.Flags
+
+class WifiPrivacyPreferenceController(context: Context, preferenceKey: String) :
+    ComposePreferenceController(context, preferenceKey) {
+
+    private var wifiEntryKey: String? = null
+
+    var wifiManager = context.getSystemService(WifiManager::class.java)!!
+
+    fun setWifiEntryKey(key: String?) {
+        wifiEntryKey = key
+    }
+
+    override fun getAvailabilityStatus() =
+        if (Flags.androidVWifiApi() && wifiManager.isConnectedMacRandomizationSupported) AVAILABLE
+        else CONDITIONALLY_UNAVAILABLE
+
+    @Composable
+    override fun Content() {
+        Preference(object : PreferenceModel {
+            override val title = stringResource(R.string.wifi_privacy_settings)
+            override val icon = @Composable {
+                Icon(
+                    ImageVector.vectorResource(R.drawable.ic_wifi_privacy_24dp),
+                    contentDescription = null
+                )
+            }
+            override val onClick: () -> Unit =
+                {
+                    wifiEntryKey?.let {
+                        mContext.startSpaActivity(WifiPrivacyPageProvider.getRoute(it))
+                    }
+                }
+        })
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java
index 8c78e80..5d393e5 100644
--- a/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java
+++ b/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java
@@ -26,6 +26,7 @@
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.wifi.flags.Flags;
 import com.android.wifitrackerlib.WifiEntry;
 
 /**
@@ -50,7 +51,7 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return mWifiManager.isConnectedMacRandomizationSupported()
+        return (!Flags.androidVWifiApi() && mWifiManager.isConnectedMacRandomizationSupported())
                 ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
     }
 
diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index 5648290..1c6794d 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -71,10 +71,12 @@
         "Settings-testutils2",
         "notification_flags_lib",
         "com_android_server_accessibility_flags_lib",
+        "testables",
     ],
 
     libs: [
         "ims-common",
+        "android.test.mock",
     ],
 
     java_resource_dirs: [
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java
index c105d08..d88a83e 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java
@@ -38,6 +38,7 @@
 
 import com.android.settings.SettingsActivity;
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
+import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
 
 import com.google.common.collect.ImmutableList;
 
@@ -57,7 +58,10 @@
 import java.util.List;
 
 /** Tests for {@link AccessibilityDetailsSettingsFragment}. */
-@Config(shadows = ShadowDevicePolicyManager.class)
+@Config(shadows = {
+        ShadowDevicePolicyManager.class,
+        ShadowRestrictedLockUtilsInternal.class
+})
 @RunWith(RobolectricTestRunner.class)
 public class AccessibilityDetailsSettingsFragmentTest {
     private static final String PACKAGE_NAME = "com.foo.bar";
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
index db6f43b..05e56ca 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
@@ -52,6 +52,7 @@
 import com.android.settings.testutils.shadow.ShadowApplicationPackageManager;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settingslib.RestrictedPreference;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -87,6 +88,7 @@
         ShadowUserManager.class,
         ShadowColorDisplayManager.class,
         ShadowApplicationPackageManager.class,
+        ShadowRestrictedLockUtilsInternal.class,
 })
 public class AccessibilitySettingsTest {
     private static final String PACKAGE_NAME = "com.android.test";
diff --git a/tests/robotests/src/com/android/settings/accessibility/RestrictedPreferenceHelperTest.java b/tests/robotests/src/com/android/settings/accessibility/RestrictedPreferenceHelperTest.java
index 99a78cf..bc9c1d8 100644
--- a/tests/robotests/src/com/android/settings/accessibility/RestrictedPreferenceHelperTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/RestrictedPreferenceHelperTest.java
@@ -31,9 +31,14 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+import android.platform.test.flag.junit.SetFlagsRule;
 
 import androidx.test.core.app.ApplicationProvider;
 
+import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
 import com.android.settingslib.RestrictedPreference;
 
 import org.junit.Rule;
@@ -45,6 +50,7 @@
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
@@ -53,6 +59,9 @@
 
 /** Test for {@link RestrictedPreferenceHelper}. */
 @RunWith(RobolectricTestRunner.class)
+@Config(shadows = {
+        ShadowRestrictedLockUtilsInternal.class
+})
 public class RestrictedPreferenceHelperTest {
 
     private static final String PACKAGE_NAME = "com.android.test";
@@ -72,6 +81,11 @@
     private AccessibilityShortcutInfo mShortcutInfo;
     private final RestrictedPreferenceHelper mHelper = new RestrictedPreferenceHelper(mContext);
 
+    @Rule
+    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+    @Rule
+    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
     @Test
     public void createAccessibilityServicePreferenceList_hasOneInfo_containsSameKey() {
         final String key = COMPONENT_NAME.flattenToString();
@@ -86,6 +100,37 @@
     }
 
     @Test
+    @RequiresFlagsEnabled(value = {android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS,
+            android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED})
+    public void createAccessibilityServicePreferenceList_ecmRestricted_prefIsEcmRestricted() {
+        ShadowRestrictedLockUtilsInternal.setEcmRestrictedPkgs(
+                mServiceInfo.getResolveInfo().serviceInfo.packageName);
+        final List<AccessibilityServiceInfo> infoList = new ArrayList<>(
+                singletonList(mServiceInfo));
+
+        final List<RestrictedPreference> preferenceList =
+                mHelper.createAccessibilityServicePreferenceList(infoList);
+        final RestrictedPreference preference = preferenceList.get(0);
+
+        assertThat(preference.isDisabledByEcm()).isTrue();
+    }
+
+    @Test
+    @RequiresFlagsEnabled(value = {android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS,
+            android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED})
+    public void createAccessibilityServicePreferenceList_ecmNotRestricted_prefIsNotEcmRestricted() {
+        ShadowRestrictedLockUtilsInternal.setEcmRestrictedPkgs();
+        final List<AccessibilityServiceInfo> infoList = new ArrayList<>(
+                singletonList(mServiceInfo));
+
+        final List<RestrictedPreference> preferenceList =
+                mHelper.createAccessibilityServicePreferenceList(infoList);
+        final RestrictedPreference preference = preferenceList.get(0);
+
+        assertThat(preference.isDisabledByEcm()).isFalse();
+    }
+
+    @Test
     public void createAccessibilityActivityPreferenceList_hasOneInfo_containsSameKey() {
         final String key = COMPONENT_NAME.flattenToString();
         setMockAccessibilityShortcutInfo(mShortcutInfo);
diff --git a/tests/robotests/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceControllerTest.java
index 6c9fbfc..1f9fbeb 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceControllerTest.java
@@ -74,13 +74,13 @@
     }
 
     @Test
-    public void handlePreferenceTreeClick_expectedPreference_launchBluetoothPairingDetail() {
-        doNothing().when(mController).launchBluetoothPairingDetail();
+    public void handlePreferenceTreeClick_expectedPreference_launchConnectedDevicePage() {
+        doNothing().when(mController).launchConnectedDevicePage();
         mPreference.setKey(TEST_KEY);
 
         boolean status = mController.handlePreferenceTreeClick(mPreference);
 
-        verify(mController).launchBluetoothPairingDetail();
+        verify(mController).launchConnectedDevicePage();
         assertThat(status).isTrue();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java
index 13f0b24..56486d2 100644
--- a/tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java
@@ -28,6 +28,9 @@
 import static com.google.android.setupcompat.util.WizardManagerHelper.EXTRA_IS_SETUP_FLOW;
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.junit.Assert.assertThrows;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 import static org.robolectric.Shadows.shadowOf;
 
 import android.content.ComponentName;
@@ -35,7 +38,9 @@
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
+import android.platform.test.flag.junit.SetFlagsRule;
 import android.provider.Settings;
+import android.util.Pair;
 import android.view.accessibility.AccessibilityManager;
 
 import androidx.fragment.app.FragmentActivity;
@@ -46,6 +51,7 @@
 import androidx.test.core.app.ApplicationProvider;
 
 import com.android.internal.accessibility.common.ShortcutConstants;
+import com.android.internal.accessibility.dialog.AccessibilityTarget;
 import com.android.internal.accessibility.util.ShortcutUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
@@ -60,6 +66,7 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.Robolectric;
@@ -89,6 +96,9 @@
     private static final String TARGET = MAGNIFICATION_CONTROLLER_NAME;
     private static final Set<String> TARGETS = Set.of(TARGET);
 
+    @Rule
+    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
     private final Context mContext = ApplicationProvider.getApplicationContext();
     private FragmentActivity mActivity;
     private FragmentScenario<EditShortcutsPreferenceFragment> mFragmentScenario;
@@ -414,6 +424,60 @@
 
     }
 
+    @Test
+    public void findTitles_withSingleTarget_hasNullSubtitle() {
+        final String fake_label = "FAKE";
+        List<AccessibilityTarget> accessibilityTargets = List.of(
+                generateAccessibilityTargetMock(TARGET_FAKE_COMPONENT, fake_label));
+
+        Pair<String, String> titles = EditShortcutsPreferenceFragment
+                .getTitlesFromAccessibilityTargetList(
+                        Set.of(TARGET_FAKE_COMPONENT.flattenToString()),
+                        accessibilityTargets, mActivity.getResources()
+                );
+
+        assertThat(titles.first).isNotNull();
+        assertThat(titles.first).contains(fake_label);
+        assertThat(titles.second).isNull();
+    }
+
+    @Test
+    public void findTitles_withMoreTargets_hasSubtitle() {
+        final String fake_label = "FAKE";
+        final String magnification_label = "MAGNIFICATION";
+        List<AccessibilityTarget> accessibilityTargets = List.of(
+                generateAccessibilityTargetMock(TARGET_FAKE_COMPONENT, fake_label),
+                generateAccessibilityTargetMock(MAGNIFICATION_COMPONENT_NAME, magnification_label));
+
+        Pair<String, String> titles = EditShortcutsPreferenceFragment
+                .getTitlesFromAccessibilityTargetList(
+                        Set.of(TARGET_FAKE_COMPONENT.flattenToString(),
+                                MAGNIFICATION_COMPONENT_NAME.flattenToString()),
+                        accessibilityTargets, mActivity.getResources()
+                );
+
+        assertThat(titles.first).isNotNull();
+        assertThat(titles.second).isNotNull();
+        assertThat(titles.second).contains(fake_label);
+        assertThat(titles.second).contains(magnification_label);
+    }
+
+    @Test
+    public void findTitles_targetMissing_labelNotInTitles() {
+        final String fake_label = "FAKE";
+        List<AccessibilityTarget> accessibilityTargets = List.of(
+                generateAccessibilityTargetMock(TARGET_FAKE_COMPONENT, fake_label));
+
+        assertThrows(IllegalStateException.class,
+                () -> EditShortcutsPreferenceFragment
+                        .getTitlesFromAccessibilityTargetList(
+                                Set.of(MAGNIFICATION_COMPONENT_NAME.flattenToString()),
+                                accessibilityTargets, mActivity.getResources()
+                        ));
+    }
+
+
+
     private void assertLaunchSubSettingWithCurrentTargetComponents(
             String componentName, boolean isInSuw) {
         Intent intent = shadowOf(mActivity.getApplication()).getNextStartedActivity();
@@ -480,4 +544,13 @@
         intent.putExtra(EXTRA_IS_DEFERRED_SETUP, isInSuw);
         return intent;
     }
+
+    private AccessibilityTarget generateAccessibilityTargetMock(
+            ComponentName componentName, String label) {
+        AccessibilityTarget target = mock(AccessibilityTarget.class);
+        when(target.getComponentName()).thenReturn(componentName);
+        when(target.getId()).thenReturn(componentName.flattenToString());
+        when(target.getLabel()).thenReturn(label);
+        return target;
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/applications/InstalledAppCounterTest.java b/tests/robotests/src/com/android/settings/applications/InstalledAppCounterTest.java
index 1d76806..e2c9573 100644
--- a/tests/robotests/src/com/android/settings/applications/InstalledAppCounterTest.java
+++ b/tests/robotests/src/com/android/settings/applications/InstalledAppCounterTest.java
@@ -41,9 +41,11 @@
 import android.content.pm.UserInfo;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.platform.test.flag.junit.SetFlagsRule;
 
 import org.junit.Before;
 import org.junit.Ignore;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentMatcher;
@@ -85,6 +87,9 @@
     @Mock
     private PackageManager mPackageManager;
 
+    @Rule
+    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
     private int mInstalledAppCount = -1;
     private ApplicationInfo mApp1;
     private ApplicationInfo mApp2;
@@ -218,6 +223,7 @@
                 eq(MAIN_USER_ID))).thenReturn(Arrays.asList(mApp2));
 
         mFakeFeatureFlags.setFlag(Flags.FLAG_ARCHIVING, false);
+        mSetFlagsRule.disableFlags(com.android.settings.flags.Flags.FLAG_APP_ARCHIVING);
         // Count the number of all apps installed, irrespective of install reason.
         count(InstalledAppCounter.IGNORE_INSTALL_REASON, mFakeFeatureFlags);
         assertThat(mInstalledAppCount).isEqualTo(1);
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
index 4fdf560..46d1cc3 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
@@ -35,6 +35,7 @@
 import static org.mockito.Mockito.when;
 
 import android.app.admin.DevicePolicyManager;
+import android.app.ecm.EnhancedConfirmationManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
@@ -90,7 +91,8 @@
     private DevicePolicyManager mDevicePolicyManager;
     @Mock
     private PackageManager mPackageManager;
-
+    @Mock
+    private EnhancedConfirmationManager mEcManager;
     private AppInfoDashboardFragment mFragment;
     private Context mShadowContext;
 
@@ -102,6 +104,7 @@
         doReturn(mActivity).when(mFragment).getActivity();
         doReturn(mShadowContext).when(mFragment).getContext();
         doReturn(mPackageManager).when(mActivity).getPackageManager();
+        doReturn(mEcManager).when(mActivity).getSystemService(EnhancedConfirmationManager.class);
         when(mUserManager.isAdminUser()).thenReturn(true);
 
         ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccessTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccessTest.java
index e91c0fa..46b1910 100644
--- a/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccessTest.java
+++ b/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccessTest.java
@@ -16,13 +16,35 @@
 
 package com.android.settings.applications.specialaccess.premiumsms;
 
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
 import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.Process;
 import android.telephony.SmsManager;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.R;
 
 import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.datausage.AppStateDataUsageBridge;
 import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
+import com.android.settingslib.RestrictedDropDownPreference;
+import com.android.settingslib.applications.ApplicationsState;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -30,19 +52,28 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.ArrayList;
 
 @RunWith(RobolectricTestRunner.class)
+@Config(shadows = {
+        ShadowRestrictedLockUtilsInternal.class
+})
 public class PremiumSmsAccessTest {
 
     private FakeFeatureFactory mFeatureFactory;
     private PremiumSmsAccess mFragment;
+    private Context mContext;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mFeatureFactory = FakeFeatureFactory.setupForTest();
         mFragment = new PremiumSmsAccess();
-        mFragment.onAttach(RuntimeEnvironment.application);
+        mContext = RuntimeEnvironment.application;
+        mFragment.onAttach(mContext);
     }
 
     @Test
@@ -74,4 +105,89 @@
                 "app",
                 SmsManager.PREMIUM_SMS_CONSENT_ALWAYS_ALLOW);
     }
+
+    @Test
+    public void onRebuildComplete_ecmRestricted_shouldBeDisabled() {
+        mFragment = spy(mFragment);
+        mContext = spy(mContext);
+        LayoutInflater inflater = LayoutInflater.from(mContext);
+        View view = inflater.inflate(R.layout.preference_dropdown, null);
+        PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen preferenceScreen = spy(preferenceManager.createPreferenceScreen(mContext));
+        doReturn(preferenceManager).when(mFragment).getPreferenceManager();
+        doReturn(preferenceScreen).when(mFragment).getPreferenceScreen();
+        final String testPkg = "com.example.disabled";
+        doNothing().when(mContext).startActivity(any());
+        ShadowRestrictedLockUtilsInternal.setEcmRestrictedPkgs(testPkg);
+
+        doAnswer((invocation) -> {
+            final RestrictedDropDownPreference preference = invocation.getArgument(0);
+            // Verify preference is disabled by ecm and the summary is changed accordingly.
+            assertThat(preference.isDisabledByEcm()).isTrue();
+            assertThat(preference.getSummary().toString()).isEqualTo(
+                    mContext.getString(
+                            com.android.settingslib.R.string.disabled_by_app_ops_text));
+            preference.onBindViewHolder(holder);
+            preference.performClick();
+            // Verify that when the preference is clicked, ecm details intent is launched
+            verify(mContext).startActivity(any());
+
+            return null;
+        }).when(preferenceScreen).addPreference(any(RestrictedDropDownPreference.class));
+
+        mFragment.onRebuildComplete(createAppEntries(testPkg));
+        verify(preferenceScreen).addPreference(any(RestrictedDropDownPreference.class));
+    }
+
+    @Test
+    public void onRebuildComplete_ecmNotRestricted_notDisabled() {
+        mFragment = spy(mFragment);
+        mContext = spy(mContext);
+        LayoutInflater inflater = LayoutInflater.from(mContext);
+        View view = inflater.inflate(R.layout.preference_dropdown, null);
+        PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen preferenceScreen = spy(preferenceManager.createPreferenceScreen(mContext));
+        doReturn(preferenceManager).when(mFragment).getPreferenceManager();
+        doReturn(preferenceScreen).when(mFragment).getPreferenceScreen();
+        final String testPkg = "com.example.enabled";
+        ShadowRestrictedLockUtilsInternal.setEcmRestrictedPkgs();
+
+
+        doAnswer((invocation) -> {
+            final RestrictedDropDownPreference preference = invocation.getArgument(0);
+            assertThat(preference.isDisabledByEcm()).isFalse();
+            assertThat(preference.getSummary().toString()).isEqualTo("");
+            preference.onBindViewHolder(holder);
+            preference.performClick();
+            // Verify that when the preference is clicked, ecm details intent is not launched
+            verify(mContext, never()).startActivity(any());
+
+            return null;
+        }).when(preferenceScreen).addPreference(any(RestrictedDropDownPreference.class));
+
+        mFragment.onRebuildComplete(createAppEntries(testPkg));
+        verify(preferenceScreen).addPreference(any(RestrictedDropDownPreference.class));
+    }
+
+    private ArrayList<ApplicationsState.AppEntry> createAppEntries(String... packageNames) {
+        final ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
+        for (int i = 0; i < packageNames.length; ++i) {
+            final ApplicationInfo info = new ApplicationInfo();
+            info.packageName = packageNames[i];
+            info.uid = Process.FIRST_APPLICATION_UID + i;
+            info.sourceDir = info.packageName;
+            final ApplicationsState.AppEntry appEntry =
+                    spy(new ApplicationsState.AppEntry(mContext, info, i));
+            appEntry.extraInfo = new AppStateDataUsageBridge
+                    .DataUsageState(false, false);
+            doNothing().when(appEntry).ensureLabel(any(Context.class));
+            ReflectionHelpers.setField(appEntry, "info", info);
+            appEntries.add(appEntry);
+        }
+        return appEntries;
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/biometrics/face/FaceEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/face/FaceEnrollIntroductionTest.java
index beb7a9f..a56c34c 100644
--- a/tests/robotests/src/com/android/settings/biometrics/face/FaceEnrollIntroductionTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/face/FaceEnrollIntroductionTest.java
@@ -43,6 +43,7 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.hardware.face.Face;
+import android.hardware.face.FaceEnrollOptions;
 import android.hardware.face.FaceManager;
 import android.hardware.face.FaceSensorProperties;
 import android.hardware.face.FaceSensorPropertiesInternal;
@@ -196,6 +197,8 @@
         final Intent testIntent = new Intent();
         // Set the challenge token so the confirm screen will not be shown
         testIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
+        testIntent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+                FaceEnrollOptions.ENROLL_REASON_SETTINGS);
 
         when(mFakeFeatureFactory.mFaceFeatureProvider.getPostureGuidanceIntent(any())).thenReturn(
                 null /* Simulate no posture intent */);
@@ -220,6 +223,8 @@
         testIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
         testIntent.putExtra(EXTRA_KEY_NEXT_LAUNCHED, false);
         testIntent.putExtra(EXTRA_LAUNCHED_POSTURE_GUIDANCE, false);
+        testIntent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+                FaceEnrollOptions.ENROLL_REASON_SETTINGS);
 
         when(mFakeFeatureFactory.mFaceFeatureProvider.getPostureGuidanceIntent(any())).thenReturn(
                 testIntent);
@@ -641,4 +646,14 @@
         final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
         assertThat(dialog).isNull();
     }
+
+    @Test
+    public void testFaceEnrollIntroduction_forwardsEnrollOptions() {
+        setupActivity();
+        final Intent intent = mActivity.getEnrollingIntent();
+
+        assertThat(intent.getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1))
+                .isEqualTo(FaceEnrollOptions.ENROLL_REASON_SETTINGS);
+    }
+
 }
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
index 4de369e..91707cd 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
@@ -669,7 +669,8 @@
                         any(CancellationSignal.class),
                         anyInt(),
                         callbackCaptor.capture(),
-                        eq(FingerprintManager.ENROLL_ENROLL));
+                        eq(FingerprintManager.ENROLL_ENROLL),
+                        any());
 
         return callbackCaptor.getValue();
     }
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
index 4d13bb6..68395b2 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
@@ -227,7 +227,8 @@
                 any(CancellationSignal.class),
                 anyInt(),
                 callbackCaptor.capture(),
-                eq(FingerprintManager.ENROLL_FIND_SENSOR));
+                eq(FingerprintManager.ENROLL_FIND_SENSOR),
+                any());
 
         return callbackCaptor.getValue();
     }
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java
index 3eba91c..1aedce5 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java
@@ -40,6 +40,7 @@
 import android.hardware.biometrics.ComponentInfoInternal;
 import android.hardware.biometrics.SensorProperties;
 import android.hardware.fingerprint.Fingerprint;
+import android.hardware.fingerprint.FingerprintEnrollOptions;
 import android.hardware.fingerprint.FingerprintManager;
 import android.hardware.fingerprint.FingerprintSensorProperties;
 import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
@@ -52,6 +53,7 @@
 import com.android.internal.widget.LockPatternUtils;
 import com.android.internal.widget.VerifyCredentialResponse;
 import com.android.settings.R;
+import com.android.settings.biometrics.BiometricUtils;
 import com.android.settings.biometrics.GatekeeperPasswordProvider;
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -289,6 +291,18 @@
         assertThat(mFingerprintEnrollIntroduction.shouldFinishWhenBackgrounded()).isEqualTo(true);
     }
 
+    @Test
+    public void testFingerprintEnrollIntroduction_forwardsEnrollOptions() {
+        final Intent intent = newTokenOnlyIntent();
+        intent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
+                FingerprintEnrollOptions.ENROLL_REASON_SETTINGS);
+        setupFingerprintEnrollIntroWith(intent);
+
+        final Intent enrollingIntent = mFingerprintEnrollIntroduction.getEnrollingIntent();
+        assertThat(enrollingIntent.getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1))
+                .isEqualTo(FingerprintEnrollOptions.ENROLL_REASON_SETTINGS);
+    }
+
     private Intent newTokenOnlyIntent() {
         return new Intent()
                 .putExtra(EXTRA_KEY_CHALLENGE_TOKEN, new byte[] { 1 });
diff --git a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
index dceadeb..5a7e247 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java
@@ -16,7 +16,6 @@
 package com.android.settings.bluetooth;
 
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
@@ -25,36 +24,26 @@
 
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
 import android.bluetooth.BluetoothProfile;
-import android.bluetooth.BluetoothStatusCodes;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.media.AudioManager;
-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.Pair;
 
 import com.android.settings.connecteddevice.DevicePreferenceCallback;
+import com.android.settings.connecteddevice.audiosharing.AudioSharingFeatureProvider;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.flags.Flags;
+import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowAudioManager;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
 import org.junit.Before;
-import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -75,9 +64,6 @@
             ShadowBluetoothUtils.class
         })
 public class AvailableMediaBluetoothDeviceUpdaterTest {
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
     private static final String MAC_ADDRESS = "04:52:C7:0B:D8:3C";
 
     @Mock private DashboardFragment mDashboardFragment;
@@ -86,11 +72,7 @@
     @Mock private BluetoothDevice mBluetoothDevice;
     @Mock private Drawable mDrawable;
     @Mock private LocalBluetoothManager mLocalBtManager;
-    @Mock private LocalBluetoothProfileManager mLocalBtProfileManager;
     @Mock private CachedBluetoothDeviceManager mCachedDeviceManager;
-    @Mock private LocalBluetoothLeBroadcast mBroadcast;
-    @Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
-    @Mock private BluetoothLeBroadcastReceiveState mBroadcastReceiveState;
 
     private Context mContext;
     private AvailableMediaBluetoothDeviceUpdater mBluetoothDeviceUpdater;
@@ -98,12 +80,14 @@
     private AudioManager mAudioManager;
     private BluetoothDevicePreference mPreference;
     private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+    private AudioSharingFeatureProvider mFeatureProvider;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
         mContext = RuntimeEnvironment.application;
+        mFeatureProvider = FakeFeatureFactory.setupForTest().getAudioSharingFeatureProvider();
         mAudioManager = mContext.getSystemService(AudioManager.class);
         ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBtManager;
         mLocalBtManager = Utils.getLocalBtManager(mContext);
@@ -267,13 +251,15 @@
     }
 
     @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onProfileConnectionStateChanged_leAudioDeviceConnected_notInCall_addsPreference() {
-        setUpBroadcast(/* isSupported= */ false, /* isBroadcasting= */ false);
+    public void
+            onProfileConnectionStateChanged_leaDeviceConnected_notInCallNoSharing_addsPreference() {
         mAudioManager.setMode(AudioManager.MODE_NORMAL);
         when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
                 .thenReturn(true);
         when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
+        when(mFeatureProvider.isAudioSharingFilterMatched(
+                        any(CachedBluetoothDevice.class), any(LocalBluetoothManager.class)))
+                .thenReturn(false);
 
         mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
                 mCachedBluetoothDevice,
@@ -284,13 +270,15 @@
     }
 
     @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onProfileConnectionStateChanged_leAudioDeviceConnected_inCall_addsPreference() {
-        setUpBroadcast(/* isSupported= */ false, /* isBroadcasting= */ false);
+    public void
+            onProfileConnectionStateChanged_leaDeviceConnected_inCallNoSharing_addsPreference() {
         mAudioManager.setMode(AudioManager.MODE_IN_CALL);
         when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
                 .thenReturn(true);
         when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
+        when(mFeatureProvider.isAudioSharingFilterMatched(
+                        any(CachedBluetoothDevice.class), any(LocalBluetoothManager.class)))
+                .thenReturn(false);
 
         mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
                 mCachedBluetoothDevice,
@@ -301,50 +289,16 @@
     }
 
     @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
     public void
-            onProfileConnectionStateChanged_leaDeviceConnected_notInCall_notInBroadcast_addsPref() {
-        setUpBroadcast(/* isSupported= */ true, /* isBroadcasting= */ false);
+            onProfileConnectionStateChanged_leaDeviceConnected_notInCallInSharing_removesPref() {
         mAudioManager.setMode(AudioManager.MODE_NORMAL);
         when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
                 .thenReturn(true);
         when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
-
-        mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
-                mCachedBluetoothDevice,
-                BluetoothProfile.STATE_CONNECTED,
-                BluetoothProfile.LE_AUDIO);
-
-        verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void
-            onProfileConnectionStateChanged_leaDeviceConnected_inCall_notInBroadcast_addsPref() {
-        setUpBroadcast(/* isSupported= */ true, /* isBroadcasting= */ false);
-        mAudioManager.setMode(AudioManager.MODE_IN_CALL);
-        when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
+        when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true);
+        when(mFeatureProvider.isAudioSharingFilterMatched(
+                        any(CachedBluetoothDevice.class), any(LocalBluetoothManager.class)))
                 .thenReturn(true);
-        when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
-
-        mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
-                mCachedBluetoothDevice,
-                BluetoothProfile.STATE_CONNECTED,
-                BluetoothProfile.LE_AUDIO);
-
-        verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void
-            onProfileConnectionStateChanged_leaDeviceConnected_notInCall_inBroadcast_removesPref() {
-        setUpBroadcast(/* isSupported= */ true, /* isBroadcasting= */ true);
-        mAudioManager.setMode(AudioManager.MODE_NORMAL);
-        when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
-                .thenReturn(true);
-        when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
 
         mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
                 mCachedBluetoothDevice,
@@ -355,14 +309,15 @@
     }
 
     @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void
-            onProfileConnectionStateChanged_leaDeviceConnected_inCall_inBroadcast_removesPref() {
-        setUpBroadcast(/* isSupported= */ true, /* isBroadcasting= */ true);
-        mAudioManager.setMode(AudioManager.MODE_IN_CALL);
+    public void onProfileConnectionStateChanged_leaDeviceConnected_inCallInSharing_removesPref() {
+        mAudioManager.setMode(AudioManager.MODE_NORMAL);
         when(mBluetoothDeviceUpdater.isDeviceConnected(any(CachedBluetoothDevice.class)))
                 .thenReturn(true);
         when(mCachedBluetoothDevice.isConnectedLeAudioDevice()).thenReturn(true);
+        when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true);
+        when(mFeatureProvider.isAudioSharingFilterMatched(
+                        any(CachedBluetoothDevice.class), any(LocalBluetoothManager.class)))
+                .thenReturn(true);
 
         mBluetoothDeviceUpdater.onProfileConnectionStateChanged(
                 mCachedBluetoothDevice,
@@ -414,56 +369,9 @@
     }
 
     @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
     public void onClick_Preference_setActive() {
-        setUpBroadcast(/* isSupported= */ false, /* isBroadcasting= */ false);
         mBluetoothDeviceUpdater.onPreferenceClick(mPreference);
 
         verify(mCachedBluetoothDevice).setActive();
     }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onClick_Preference_isNotBroadcasting_setActive() {
-        setUpBroadcast(/* isSupported= */ true, /* isBroadcasting= */ false);
-        mBluetoothDeviceUpdater.onPreferenceClick(mPreference);
-
-        verify(mCachedBluetoothDevice).setActive();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onClick_Preference_isBroadcasting_stopBroadcastingAndSetActive() {
-        setUpBroadcast(/* isSupported= */ true, /* isBroadcasting= */ true);
-        doNothing().when(mBroadcast).stopBroadcast(anyInt());
-        mBluetoothDeviceUpdater.onPreferenceClick(mPreference);
-
-        verify(mBroadcast).stopBroadcast(anyInt());
-        verify(mCachedBluetoothDevice).setActive();
-    }
-
-    private void setUpBroadcast(boolean isSupported, boolean isBroadcasting) {
-        if (isSupported) {
-            mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                    BluetoothStatusCodes.FEATURE_SUPPORTED);
-            mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                    BluetoothStatusCodes.FEATURE_SUPPORTED);
-            when(mLocalBtManager.getProfileManager()).thenReturn(mLocalBtProfileManager);
-            when(mLocalBtProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast);
-            when(mBroadcast.isEnabled(null)).thenReturn(isBroadcasting);
-            when(mLocalBtProfileManager.getLeAudioBroadcastAssistantProfile())
-                    .thenReturn(mAssistant);
-            if (isBroadcasting) {
-                when(mAssistant.getAllSources(any()))
-                        .thenReturn(ImmutableList.of(mBroadcastReceiveState));
-            } else {
-                when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of());
-            }
-        } else {
-            mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                    BluetoothStatusCodes.FEATURE_NOT_SUPPORTED);
-            mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                    BluetoothStatusCodes.FEATURE_NOT_SUPPORTED);
-        }
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothAutoOnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothAutoOnPreferenceControllerTest.java
new file mode 100644
index 0000000..d82dcc4
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothAutoOnPreferenceControllerTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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 com.android.settings.bluetooth;
+
+import static com.android.settings.bluetooth.BluetoothAutoOnPreferenceController.DISABLED;
+import static com.android.settings.bluetooth.BluetoothAutoOnPreferenceController.ENABLED;
+import static com.android.settings.bluetooth.BluetoothAutoOnPreferenceController.PREF_KEY;
+import static com.android.settings.bluetooth.BluetoothAutoOnPreferenceController.SETTING_NAME;
+import static com.android.settings.bluetooth.BluetoothAutoOnPreferenceController.UNSET;
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+import static com.android.settingslib.flags.Flags.FLAG_BLUETOOTH_QS_TILE_DIALOG_AUTO_ON_TOGGLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class BluetoothAutoOnPreferenceControllerTest {
+    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+    private Context mContext;
+    private ContentResolver mContentResolver;
+    private BluetoothAutoOnPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mSetFlagsRule.enableFlags(FLAG_BLUETOOTH_QS_TILE_DIALOG_AUTO_ON_TOGGLE);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mContentResolver = mContext.getContentResolver();
+        mController = new BluetoothAutoOnPreferenceController(mContext, PREF_KEY);
+    }
+
+    @Test
+    public void getAvailability_valueUnset_returnUnsupported() {
+        Settings.Secure.putInt(mContentResolver, SETTING_NAME, UNSET);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailability_valueSet_returnAvailable() {
+        Settings.Secure.putInt(mContentResolver, SETTING_NAME, DISABLED);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void isChecked_valueEnabled_returnTrue() {
+        Settings.Secure.putInt(mContentResolver, SETTING_NAME, ENABLED);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+        assertThat(mController.isChecked()).isEqualTo(true);
+    }
+
+    @Test
+    public void setChecked_returnTrue() {
+        Settings.Secure.putInt(mContentResolver, SETTING_NAME, DISABLED);
+
+        mController.setChecked(true);
+        assertThat(mController.isChecked()).isEqualTo(true);
+    }
+
+    @Test
+    public void setChecked_returnFalse() {
+        Settings.Secure.putInt(mContentResolver, SETTING_NAME, ENABLED);
+
+        mController.setChecked(false);
+        assertThat(mController.isChecked()).isEqualTo(false);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsControllerTestBase.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsControllerTestBase.java
index 8ba0b44..4edf117 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsControllerTestBase.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsControllerTestBase.java
@@ -43,6 +43,7 @@
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = {
         com.android.settings.testutils.shadow.ShadowFragment.class,
+        com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal.class,
 })
 public abstract class BluetoothDetailsControllerTestBase {
 
diff --git a/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java
index cd48bf1..ee00068 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java
@@ -41,12 +41,12 @@
 
 import com.android.settings.connecteddevice.DevicePreferenceCallback;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.flags.Flags;
 import com.android.settings.testutils.shadow.ShadowAudioManager;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowCachedBluetoothDeviceManager;
 import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.flags.Flags;
 
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
index 349391d..796120d 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
@@ -40,12 +40,12 @@
 
 import com.android.settings.connecteddevice.DevicePreferenceCallback;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.flags.Flags;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.flags.Flags;
 
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
index e5964d0..357420a 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
@@ -22,27 +22,23 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
 
-import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
 import android.bluetooth.BluetoothProfile;
-import android.bluetooth.BluetoothStatusCodes;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.media.AudioManager;
-import android.platform.test.annotations.RequiresFlagsEnabled;
 import android.platform.test.flag.junit.CheckFlagsRule;
 import android.platform.test.flag.junit.DeviceFlagsValueProvider;
 
 import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.FragmentActivity;
+import androidx.lifecycle.LifecycleOwner;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 import androidx.preference.PreferenceManager;
@@ -51,19 +47,16 @@
 import com.android.settings.R;
 import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
 import com.android.settings.bluetooth.Utils;
-import com.android.settings.flags.Flags;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
 import com.android.settings.testutils.shadow.ShadowAudioManager;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
 import com.android.settingslib.bluetooth.BluetoothCallback;
 import com.android.settingslib.bluetooth.BluetoothEventManager;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
 import com.android.settingslib.bluetooth.HearingAidInfo;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
+import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -76,16 +69,12 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.concurrent.Executor;
 
 /** Tests for {@link AvailableMediaDeviceGroupController}. */
 @RunWith(RobolectricTestRunner.class)
 @Config(
         shadows = {
             ShadowAudioManager.class,
-            ShadowBluetoothAdapter.class,
             ShadowBluetoothUtils.class,
             ShadowAlertDialogCompat.class,
         })
@@ -105,9 +94,7 @@
     @Mock private PackageManager mPackageManager;
     @Mock private BluetoothEventManager mEventManager;
     @Mock private LocalBluetoothManager mLocalBluetoothManager;
-    @Mock private LocalBluetoothProfileManager mLocalBtProfileManager;
     @Mock private CachedBluetoothDeviceManager mCachedDeviceManager;
-    @Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
     @Mock private CachedBluetoothDevice mCachedBluetoothDevice;
 
     private PreferenceGroup mPreferenceGroup;
@@ -115,13 +102,16 @@
     private Preference mPreference;
     private AvailableMediaDeviceGroupController mAvailableMediaDeviceGroupController;
     private AudioManager mAudioManager;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+    private LifecycleOwner mLifecycleOwner;
+    private Lifecycle mLifecycle;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
         mContext = spy(RuntimeEnvironment.application);
+        mLifecycleOwner = () -> mLifecycle;
+        mLifecycle = new Lifecycle(mLifecycleOwner);
         mPreference = new Preference(mContext);
         mPreference.setKey(PREFERENCE_KEY_1);
         mPreferenceGroup = spy(new PreferenceScreen(mContext, null));
@@ -130,24 +120,17 @@
         doReturn(mPackageManager).when(mContext).getPackageManager();
         doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
 
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_NOT_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_NOT_SUPPORTED);
         ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
         mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
         mAudioManager = mContext.getSystemService(AudioManager.class);
         doReturn(mEventManager).when(mLocalBluetoothManager).getEventManager();
-        when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBtProfileManager);
         when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
         when(mCachedDeviceManager.findDevice(any(BluetoothDevice.class)))
                 .thenReturn(mCachedBluetoothDevice);
         when(mCachedBluetoothDevice.getAddress()).thenReturn(TEST_DEVICE_ADDRESS);
 
         mAvailableMediaDeviceGroupController =
-                spy(new AvailableMediaDeviceGroupController(mContext));
+                spy(new AvailableMediaDeviceGroupController(mContext, null, mLifecycle));
         mAvailableMediaDeviceGroupController.setBluetoothDeviceUpdater(
                 mAvailableMediaBluetoothDeviceUpdater);
         mAvailableMediaDeviceGroupController.setFragmentManager(
@@ -197,7 +180,7 @@
     @Test
     public void testRegister() {
         // register the callback in onStart()
-        mAvailableMediaDeviceGroupController.onStart();
+        mAvailableMediaDeviceGroupController.onStart(mLifecycleOwner);
 
         verify(mAvailableMediaBluetoothDeviceUpdater).registerCallback();
         verify(mLocalBluetoothManager.getEventManager())
@@ -206,36 +189,15 @@
     }
 
     @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void testRegister_audioSharingOn() {
-        setUpBroadcast();
-        // register the callback in onStart()
-        mAvailableMediaDeviceGroupController.onStart();
-        verify(mAssistant)
-                .registerServiceCallBack(
-                        any(Executor.class), any(BluetoothLeBroadcastAssistant.Callback.class));
-    }
-
-    @Test
     public void testUnregister() {
         // unregister the callback in onStop()
-        mAvailableMediaDeviceGroupController.onStop();
+        mAvailableMediaDeviceGroupController.onStop(mLifecycleOwner);
         verify(mAvailableMediaBluetoothDeviceUpdater).unregisterCallback();
         verify(mLocalBluetoothManager.getEventManager())
                 .unregisterCallback(any(BluetoothCallback.class));
     }
 
     @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void testUnregister_audioSharingOn() {
-        setUpBroadcast();
-        // unregister the callback in onStop()
-        mAvailableMediaDeviceGroupController.onStop();
-        verify(mAssistant)
-                .unregisterServiceCallBack(any(BluetoothLeBroadcastAssistant.Callback.class));
-    }
-
-    @Test
     public void testGetAvailabilityStatus_noBluetoothFeature_returnUnSupported() {
         doReturn(false).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
 
@@ -274,7 +236,7 @@
         mAvailableMediaDeviceGroupController.mLocalBluetoothManager = null;
 
         // Shouldn't crash
-        mAvailableMediaDeviceGroupController.onStart();
+        mAvailableMediaDeviceGroupController.onStart(mLifecycleOwner);
     }
 
     @Test
@@ -282,7 +244,7 @@
         mAvailableMediaDeviceGroupController.mLocalBluetoothManager = null;
 
         // Shouldn't crash
-        mAvailableMediaDeviceGroupController.onStop();
+        mAvailableMediaDeviceGroupController.onStop(mLifecycleOwner);
     }
 
     @Test
@@ -300,19 +262,4 @@
         final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
         assertThat(dialog.isShowing()).isTrue();
     }
-
-    private void setUpBroadcast() {
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        when(mLocalBtProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(mAssistant);
-        doNothing()
-                .when(mAssistant)
-                .registerServiceCallBack(
-                        any(Executor.class), any(BluetoothLeBroadcastAssistant.Callback.class));
-        doNothing()
-                .when(mAssistant)
-                .unregisterServiceCallBack(any(BluetoothLeBroadcastAssistant.Callback.class));
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
index 09f7a38..0cd464c 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
@@ -20,19 +20,25 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.platform.test.flag.junit.CheckFlagsRule;
 import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+import android.platform.test.flag.junit.SetFlagsRule;
 import android.provider.SearchIndexableResource;
 
 import com.android.settings.R;
+import com.android.settings.connecteddevice.fastpair.FastPairDeviceUpdater;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.core.PreferenceControllerListHelper;
+import com.android.settings.flags.Flags;
 import com.android.settings.slices.SlicePreferenceController;
+import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowConnectivityManager;
 import com.android.settings.testutils.shadow.ShadowUserManager;
@@ -60,14 +66,13 @@
     @Rule
     public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
 
+    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
     private static final String KEY_NEARBY_DEVICES = "bt_nearby_slice";
     private static final String KEY_DISCOVERABLE_FOOTER = "discoverable_footer";
     private static final String KEY_SAVED_DEVICE_SEE_ALL = "previously_connected_devices_see_all";
     private static final String KEY_FAST_PAIR_DEVICE_SEE_ALL = "fast_pair_devices_see_all";
     private static final String KEY_ADD_BT_DEVICES = "add_bt_devices";
-    private static final String KEY_AUDIO_SHARING_DEVICE_LIST = "audio_sharing_device_list";
-    private static final String KEY_AUDIO_SHARING_SETTINGS =
-            "connected_device_audio_sharing_settings";
     private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
     private static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui";
     private static final String SLICE_ACTION = "com.android.settings.SEARCH_RESULT_TRAMPOLINE";
@@ -75,8 +80,11 @@
     private static final String TEST_ACTION = "com.testapp.settings.ACTION_START";
 
     @Mock private PackageManager mPackageManager;
+    @Mock private FastPairDeviceUpdater mFastPairDeviceUpdater;
     private Context mContext;
     private ConnectedDeviceDashboardFragment mFragment;
+    private FakeFeatureFactory mFeatureFactory;
+    private AvailableMediaDeviceGroupController mMediaDeviceGroupController;
 
     @Before
     public void setUp() {
@@ -84,6 +92,22 @@
 
         mContext = spy(RuntimeEnvironment.application);
         mFragment = new ConnectedDeviceDashboardFragment();
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_SUBSEQUENT_PAIR_SETTINGS_INTEGRATION);
+        mFeatureFactory = FakeFeatureFactory.setupForTest();
+        when(mFeatureFactory
+                        .getFastPairFeatureProvider()
+                        .getFastPairDeviceUpdater(
+                                any(Context.class), any(DevicePreferenceCallback.class)))
+                .thenReturn(mFastPairDeviceUpdater);
+        when(mFeatureFactory
+                        .getAudioSharingFeatureProvider()
+                        .createAudioSharingDevicePreferenceController(mContext, null, null))
+                .thenReturn(null);
+        mMediaDeviceGroupController = new AvailableMediaDeviceGroupController(mContext, null, null);
+        when(mFeatureFactory
+                        .getAudioSharingFeatureProvider()
+                        .createAvailableMediaDeviceGroupController(mContext, null, null))
+                .thenReturn(mMediaDeviceGroupController);
         doReturn(mPackageManager).when(mContext).getPackageManager();
         doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
     }
@@ -111,9 +135,7 @@
                         KEY_NEARBY_DEVICES,
                         KEY_DISCOVERABLE_FOOTER,
                         KEY_SAVED_DEVICE_SEE_ALL,
-                        KEY_FAST_PAIR_DEVICE_SEE_ALL,
-                        KEY_AUDIO_SHARING_DEVICE_LIST,
-                        KEY_AUDIO_SHARING_SETTINGS);
+                        KEY_FAST_PAIR_DEVICE_SEE_ALL);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java
deleted file mode 100644
index 757964b..0000000
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java
+++ /dev/null
@@ -1,232 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothStatusCodes;
-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.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.settings.R;
-import com.android.settings.flags.Flags;
-import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.androidx.fragment.FragmentController;
-
-import java.util.ArrayList;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(
-        shadows = {
-            ShadowAlertDialogCompat.class,
-            ShadowBluetoothAdapter.class,
-        })
-public class AudioSharingDialogFragmentTest {
-
-    @Rule public final MockitoRule mocks = MockitoJUnit.rule();
-
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
-    private static final String TEST_DEVICE_NAME1 = "test1";
-
-    private static final String TEST_DEVICE_NAME2 = "test2";
-    private static final String TEST_DEVICE_NAME3 = "test3";
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM1 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME1, /* groupId= */ 1, /* isActive= */ false);
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM2 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME2, /* groupId= */ 2, /* isActive= */ false);
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM3 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME3, /* groupId= */ 3, /* isActive= */ false);
-
-    private Fragment mParent;
-    private AudioSharingDialogFragment mFragment;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
-
-    @Before
-    public void setUp() {
-        ShadowAlertDialogCompat.reset();
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mFragment = new AudioSharingDialogFragment();
-        mParent = new Fragment();
-        FragmentController.setupFragment(
-                mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
-    }
-
-    @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOff_dialogNotExist() {
-        mFragment.show(mParent, new ArrayList<>(), (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNull();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOn_noConnectedDevice() {
-        mFragment.show(mParent, new ArrayList<>(), (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        TextView subtitle1 = rootView.findViewById(R.id.share_audio_subtitle1);
-        ImageView guidance = rootView.findViewById(R.id.share_audio_guidance);
-        Button shareBtn = rootView.findViewById(R.id.share_btn);
-        assertThat(dialog.isShowing()).isTrue();
-        assertThat(subtitle1.getVisibility()).isEqualTo(View.GONE);
-        assertThat(guidance.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(shareBtn.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_noConnectedDevice_dialogDismiss() {
-        mFragment.show(mParent, new ArrayList<>(), (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        dialog.findViewById(android.R.id.button2).performClick();
-        shadowMainLooper().idle();
-        assertThat(dialog.isShowing()).isFalse();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOn_singleConnectedDevice() {
-        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
-        list.add(TEST_DEVICE_ITEM1);
-        mFragment.show(mParent, list, (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        TextView subtitle1 = rootView.findViewById(R.id.share_audio_subtitle1);
-        ImageView guidance = rootView.findViewById(R.id.share_audio_guidance);
-        Button shareBtn = rootView.findViewById(R.id.share_btn);
-        assertThat(dialog.isShowing()).isTrue();
-        assertThat(subtitle1.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(subtitle1.getText().toString()).isEqualTo(TEST_DEVICE_NAME1);
-        assertThat(guidance.getVisibility()).isEqualTo(View.GONE);
-        assertThat(shareBtn.getVisibility()).isEqualTo(View.VISIBLE);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_singleConnectedDevice_dialogDismiss() {
-        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
-        list.add(TEST_DEVICE_ITEM1);
-        mFragment.show(mParent, list, (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        rootView.findViewById(R.id.cancel_btn).performClick();
-        assertThat(dialog.isShowing()).isFalse();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_singleConnectedDevice_shareClicked() {
-        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
-        list.add(TEST_DEVICE_ITEM1);
-        AtomicBoolean isShareBtnClicked = new AtomicBoolean(false);
-        mFragment.show(
-                mParent,
-                list,
-                (item) -> {
-                    isShareBtnClicked.set(true);
-                });
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        rootView.findViewById(R.id.share_btn).performClick();
-        assertThat(dialog.isShowing()).isFalse();
-        assertThat(isShareBtnClicked.get()).isTrue();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOn_multipleConnectedDevice() {
-        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
-        list.add(TEST_DEVICE_ITEM1);
-        list.add(TEST_DEVICE_ITEM2);
-        list.add(TEST_DEVICE_ITEM3);
-        mFragment.show(mParent, list, (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        TextView subtitle1 = rootView.findViewById(R.id.share_audio_subtitle1);
-        ImageView guidance = rootView.findViewById(R.id.share_audio_guidance);
-        Button shareBtn = rootView.findViewById(R.id.share_btn);
-        RecyclerView recyclerView = rootView.findViewById(R.id.btn_list);
-        assertThat(dialog.isShowing()).isTrue();
-        assertThat(subtitle1.getVisibility()).isEqualTo(View.GONE);
-        assertThat(guidance.getVisibility()).isEqualTo(View.GONE);
-        assertThat(shareBtn.getVisibility()).isEqualTo(View.GONE);
-        assertThat(recyclerView.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(recyclerView.getAdapter().getItemCount()).isEqualTo(3);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_multipleConnectedDevice_dialogDismiss() {
-        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
-        list.add(TEST_DEVICE_ITEM1);
-        list.add(TEST_DEVICE_ITEM2);
-        list.add(TEST_DEVICE_ITEM3);
-        mFragment.show(mParent, list, (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        rootView.findViewById(R.id.cancel_btn).performClick();
-        assertThat(dialog.isShowing()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java
deleted file mode 100644
index 966a695..0000000
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java
+++ /dev/null
@@ -1,224 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothStatusCodes;
-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.view.View;
-import android.widget.Button;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.settings.R;
-import com.android.settings.flags.Flags;
-import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.androidx.fragment.FragmentController;
-
-import java.util.ArrayList;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(
-        shadows = {
-            ShadowAlertDialogCompat.class,
-            ShadowBluetoothAdapter.class,
-        })
-public class AudioSharingDisconnectDialogFragmentTest {
-
-    @Rule public final MockitoRule mocks = MockitoJUnit.rule();
-
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
-    private static final String TEST_DEVICE_NAME1 = "test1";
-    private static final String TEST_DEVICE_NAME2 = "test2";
-    private static final String TEST_DEVICE_NAME3 = "test3";
-    private static final int TEST_GROUP_ID1 = 1;
-    private static final int TEST_GROUP_ID2 = 2;
-    private static final int TEST_GROUP_ID3 = 3;
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM1 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME1, TEST_GROUP_ID1, /* isActive= */ true);
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM2 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME2, TEST_GROUP_ID2, /* isActive= */ false);
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM3 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME3, TEST_GROUP_ID3, /* isActive= */ false);
-
-    @Mock private BluetoothDevice mDevice1;
-    @Mock private BluetoothDevice mDevice2;
-    @Mock private BluetoothDevice mDevice3;
-
-    @Mock private CachedBluetoothDevice mCachedDevice1;
-    @Mock private CachedBluetoothDevice mCachedDevice2;
-    @Mock private CachedBluetoothDevice mCachedDevice3;
-    private Fragment mParent;
-    private AudioSharingDisconnectDialogFragment mFragment;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
-    private ArrayList<AudioSharingDeviceItem> mDeviceItems = new ArrayList<>();
-
-    @Before
-    public void setUp() {
-        AlertDialog latestAlertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        if (latestAlertDialog != null) {
-            latestAlertDialog.dismiss();
-            ShadowAlertDialogCompat.reset();
-        }
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        when(mCachedDevice1.getName()).thenReturn(TEST_DEVICE_NAME1);
-        when(mCachedDevice1.getDevice()).thenReturn(mDevice1);
-        when(mCachedDevice1.getGroupId()).thenReturn(TEST_GROUP_ID1);
-        when(mCachedDevice2.getName()).thenReturn(TEST_DEVICE_NAME2);
-        when(mCachedDevice2.getDevice()).thenReturn(mDevice2);
-        when(mCachedDevice2.getGroupId()).thenReturn(TEST_GROUP_ID2);
-        when(mCachedDevice3.getName()).thenReturn(TEST_DEVICE_NAME3);
-        when(mCachedDevice3.getDevice()).thenReturn(mDevice3);
-        when(mCachedDevice3.getGroupId()).thenReturn(TEST_GROUP_ID3);
-        mFragment = new AudioSharingDisconnectDialogFragment();
-        mParent = new Fragment();
-        FragmentController.setupFragment(
-                mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
-        mDeviceItems.add(TEST_DEVICE_ITEM1);
-        mDeviceItems.add(TEST_DEVICE_ITEM2);
-        mFragment.show(mParent, mDeviceItems, mCachedDevice3, (item) -> {});
-        shadowMainLooper().idle();
-    }
-
-    @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOff_dialogNotExist() {
-        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
-        list.add(TEST_DEVICE_ITEM1);
-        list.add(TEST_DEVICE_ITEM2);
-        mFragment.show(mParent, list, mCachedDevice3, (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNull();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOn_dialogShowBtnForTwoDevices() {
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog.isShowing()).isTrue();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        RecyclerView view = rootView.findViewById(R.id.device_btn_list);
-        assertThat(view.getAdapter().getItemCount()).isEqualTo(2);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_dialogIsShowingForSameGroup_updateDialog() {
-        String prefix = "Disconnect ";
-        AtomicBoolean isItemBtnClicked = new AtomicBoolean(false);
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog.isShowing()).isTrue();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        RecyclerView view = rootView.findViewById(R.id.device_btn_list);
-        assertThat(view.getAdapter().getItemCount()).isEqualTo(2);
-        Button btn1 =
-                view.findViewHolderForAdapterPosition(0).itemView.findViewById(R.id.device_button);
-        assertThat(btn1.getText().toString()).isEqualTo(prefix + TEST_DEVICE_NAME1);
-        Button btn2 =
-                view.findViewHolderForAdapterPosition(1).itemView.findViewById(R.id.device_button);
-        assertThat(btn2.getText().toString()).isEqualTo(prefix + TEST_DEVICE_NAME2);
-        btn1.performClick();
-        assertThat(isItemBtnClicked.get()).isFalse();
-
-        // Update dialog content with same group
-        mFragment.show(mParent, mDeviceItems, mCachedDevice3, (item) -> isItemBtnClicked.set(true));
-        shadowMainLooper().idle();
-        dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog.isShowing()).isTrue();
-        btn1 = view.findViewHolderForAdapterPosition(0).itemView.findViewById(R.id.device_button);
-        btn1.performClick();
-        assertThat(isItemBtnClicked.get()).isTrue();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_dialogIsShowingForNewGroup_updateDialog() {
-        String prefix = "Disconnect ";
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog.isShowing()).isTrue();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        RecyclerView view = rootView.findViewById(R.id.device_btn_list);
-        assertThat(view.getAdapter().getItemCount()).isEqualTo(2);
-
-        // Update dialog content with new group
-        ArrayList<AudioSharingDeviceItem> newDeviceItems = new ArrayList<>();
-        newDeviceItems.add(TEST_DEVICE_ITEM2);
-        newDeviceItems.add(TEST_DEVICE_ITEM3);
-        mFragment.show(mParent, newDeviceItems, mCachedDevice1, (item) -> {});
-        shadowMainLooper().idle();
-        dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog.isShowing()).isTrue();
-        shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        rootView = shadowDialog.getView();
-        view = rootView.findViewById(R.id.device_btn_list);
-        assertThat(view.getAdapter().getItemCount()).isEqualTo(2);
-        Button btn1 =
-                view.findViewHolderForAdapterPosition(0).itemView.findViewById(R.id.device_button);
-        assertThat(btn1.getText().toString()).isEqualTo(prefix + TEST_DEVICE_NAME2);
-        Button btn2 =
-                view.findViewHolderForAdapterPosition(1).itemView.findViewById(R.id.device_button);
-        assertThat(btn2.getText().toString()).isEqualTo(prefix + TEST_DEVICE_NAME3);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_clickCancel_dialogDismiss() {
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog.isShowing()).isTrue();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        rootView.findViewById(R.id.cancel_btn).performClick();
-        assertThat(dialog.isShowing()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImplTest.java
new file mode 100644
index 0000000..1965bff
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImplTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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 com.android.settings.connecteddevice.audiosharing;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.connecteddevice.AvailableMediaDeviceGroupController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class AudioSharingFeatureProviderImplTest {
+    @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+    @Mock private CachedBluetoothDevice mCachedDevice;
+    @Mock private LocalBluetoothManager mLocalBtManager;
+    @Mock private DashboardFragment mFragment;
+    private Context mContext;
+    private AudioSharingFeatureProviderImpl mFeatureProvider;
+
+    @Before
+    public void setUp() {
+        mContext = ApplicationProvider.getApplicationContext();
+        mFeatureProvider = new AudioSharingFeatureProviderImpl();
+    }
+
+    @Test
+    public void createAudioSharingDevicePreferenceController_returnsNull() {
+        assertThat(
+                        mFeatureProvider.createAudioSharingDevicePreferenceController(
+                                mContext, mFragment, /* lifecycle= */ null))
+                .isNull();
+    }
+
+    @Test
+    public void createAvailableMediaDeviceGroupController_returnsNull() {
+        assertThat(
+                        mFeatureProvider.createAvailableMediaDeviceGroupController(
+                                mContext, /* fragment= */ null, /* lifecycle= */ null))
+                .isInstanceOf(AvailableMediaDeviceGroupController.class);
+    }
+
+    @Test
+    public void isAudioSharingFilterMatched_returnsFalse() {
+        assertThat(mFeatureProvider.isAudioSharingFilterMatched(mCachedDevice, mLocalBtManager))
+                .isFalse();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java
deleted file mode 100644
index 56951c2..0000000
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java
+++ /dev/null
@@ -1,190 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothStatusCodes;
-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.view.View;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.settings.R;
-import com.android.settings.flags.Flags;
-import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.androidx.fragment.FragmentController;
-
-import java.util.ArrayList;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(
-        shadows = {
-            ShadowAlertDialogCompat.class,
-            ShadowBluetoothAdapter.class,
-        })
-public class AudioSharingJoinDialogFragmentTest {
-
-    @Rule public final MockitoRule mocks = MockitoJUnit.rule();
-
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
-    private static final String TEST_DEVICE_NAME1 = "test1";
-    private static final String TEST_DEVICE_NAME2 = "test2";
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM1 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME1, /* groupId= */ 1, /* isActive= */ true);
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM2 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME2, /* groupId= */ 2, /* isActive= */ false);
-
-    @Mock private CachedBluetoothDevice mCachedDevice1;
-    @Mock private CachedBluetoothDevice mCachedDevice2;
-    private Fragment mParent;
-    private AudioSharingJoinDialogFragment mFragment;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
-
-    @Before
-    public void setUp() {
-        AlertDialog latestAlertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        if (latestAlertDialog != null) {
-            latestAlertDialog.dismiss();
-            ShadowAlertDialogCompat.reset();
-        }
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        when(mCachedDevice1.getName()).thenReturn(TEST_DEVICE_NAME1);
-        when(mCachedDevice2.getName()).thenReturn(TEST_DEVICE_NAME2);
-        mFragment = new AudioSharingJoinDialogFragment();
-        mParent = new Fragment();
-        FragmentController.setupFragment(
-                mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
-    }
-
-    @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOff_dialogNotExist() {
-        mFragment.show(mParent, new ArrayList<>(), mCachedDevice2, () -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNull();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOn_dialogShowTextForSingleDevice() {
-        mFragment.show(mParent, new ArrayList<>(), mCachedDevice2, () -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNotNull();
-        assertThat(dialog.isShowing()).isTrue();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        assertThat(shadowDialog.getMessage().toString()).isEqualTo(TEST_DEVICE_NAME2);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOn_dialogShowTextForTwoDevice() {
-        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
-        list.add(TEST_DEVICE_ITEM1);
-        mFragment.show(mParent, list, mCachedDevice2, () -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNotNull();
-        assertThat(dialog.isShowing()).isTrue();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        assertThat(shadowDialog.getMessage().toString())
-                .isEqualTo(TEST_DEVICE_NAME1 + " and " + TEST_DEVICE_NAME2);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_dialogIsShowing_updateDialog() {
-        ArrayList<AudioSharingDeviceItem> list = new ArrayList<>();
-        list.add(TEST_DEVICE_ITEM1);
-        mFragment.show(mParent, list, mCachedDevice2, () -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNotNull();
-        assertThat(dialog.isShowing()).isTrue();
-
-        // Update the content
-        ArrayList<AudioSharingDeviceItem> list2 = new ArrayList<>();
-        list2.add(TEST_DEVICE_ITEM2);
-        mFragment.show(mParent, list2, mCachedDevice1, () -> {});
-        shadowMainLooper().idle();
-        dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNotNull();
-        assertThat(dialog.isShowing()).isTrue();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        assertThat(shadowDialog.getMessage().toString())
-                .isEqualTo(TEST_DEVICE_NAME2 + " and " + TEST_DEVICE_NAME1);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_clickCancel_dialogDismiss() {
-        mFragment.show(mParent, new ArrayList<>(), mCachedDevice2, () -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        rootView.findViewById(R.id.cancel_btn).performClick();
-        assertThat(dialog.isShowing()).isFalse();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_clickShare_callbackTriggered() {
-        AtomicBoolean isShareBtnClicked = new AtomicBoolean(false);
-        mFragment.show(
-                mParent, new ArrayList<>(), mCachedDevice2, () -> isShareBtnClicked.set(true));
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        View rootView = shadowDialog.getView();
-        rootView.findViewById(R.id.share_btn).performClick();
-        assertThat(dialog.isShowing()).isFalse();
-        assertThat(isShareBtnClicked.get()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceControllerTest.java
deleted file mode 100644
index 145c08c..0000000
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPreferenceControllerTest.java
+++ /dev/null
@@ -1,160 +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 com.android.settings.connecteddevice.audiosharing;
-
-import static android.bluetooth.BluetoothAdapter.STATE_OFF;
-import static android.bluetooth.BluetoothAdapter.STATE_ON;
-
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothLeBroadcast;
-import android.bluetooth.BluetoothStatusCodes;
-import android.content.Context;
-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 androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.flags.Flags;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
-import com.android.settingslib.bluetooth.BluetoothEventManager;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothUtils.class})
-public class AudioSharingPreferenceControllerTest {
-    private static final String PREF_KEY = "audio_sharing_settings";
-    private static final String SUMMARY_ON = "On";
-    private static final String SUMMARY_OFF = "Off";
-
-    @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
-
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
-    @Spy Context mContext = ApplicationProvider.getApplicationContext();
-    @Mock private PreferenceScreen mScreen;
-    @Mock private LocalBluetoothManager mLocalBtManager;
-    @Mock private BluetoothEventManager mBtEventManager;
-    @Mock private LocalBluetoothProfileManager mLocalBtProfileManager;
-    @Mock private LocalBluetoothLeBroadcast mBroadcast;
-    private AudioSharingPreferenceController mController;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private Lifecycle mLifecycle;
-    private LifecycleOwner mLifecycleOwner;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBtManager;
-        mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
-        when(mLocalBluetoothManager.getEventManager()).thenReturn(mBtEventManager);
-        when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBtProfileManager);
-        when(mLocalBtProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast);
-        mController = new AudioSharingPreferenceController(mContext, PREF_KEY);
-        mPreference = new Preference(mContext);
-        when(mScreen.findPreference(PREF_KEY)).thenReturn(mPreference);
-    }
-
-    @Test
-    public void onStart_registerCallback() {
-        mController.onStart(mLifecycleOwner);
-        verify(mBtEventManager).registerCallback(mController);
-        verify(mBroadcast).registerServiceCallBack(any(), any(BluetoothLeBroadcast.Callback.class));
-    }
-
-    @Test
-    public void onStop_unregisterCallback() {
-        mController.onStop(mLifecycleOwner);
-        verify(mBtEventManager).unregisterCallback(mController);
-        verify(mBroadcast).unregisterServiceCallBack(any(BluetoothLeBroadcast.Callback.class));
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void getAvailabilityStatus_flagOn() {
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void getAvailabilityStatus_flagOff() {
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void getSummary_broadcastOn() {
-        when(mBroadcast.isEnabled(any())).thenReturn(true);
-        assertThat(mController.getSummary().toString()).isEqualTo(SUMMARY_ON);
-    }
-
-    @Test
-    public void getSummary_broadcastOff() {
-        when(mBroadcast.isEnabled(any())).thenReturn(false);
-        assertThat(mController.getSummary().toString()).isEqualTo(SUMMARY_OFF);
-    }
-
-    @Test
-    public void onBluetoothStateChanged_refreshSummary() {
-        mController.displayPreference(mScreen);
-        when(mBroadcast.isEnabled(any())).thenReturn(true);
-        mController.onBluetoothStateChanged(STATE_ON);
-        assertThat(mPreference.getSummary().toString()).isEqualTo(SUMMARY_ON);
-        when(mBroadcast.isEnabled(any())).thenReturn(false);
-        mController.onBluetoothStateChanged(STATE_OFF);
-        assertThat(mPreference.getSummary().toString()).isEqualTo(SUMMARY_OFF);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java
deleted file mode 100644
index d93105d..0000000
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java
+++ /dev/null
@@ -1,151 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothStatusCodes;
-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 androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.settings.flags.Flags;
-import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.androidx.fragment.FragmentController;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(
-        shadows = {
-            ShadowAlertDialogCompat.class,
-            ShadowBluetoothAdapter.class,
-        })
-public class AudioSharingStopDialogFragmentTest {
-
-    @Rule public final MockitoRule mocks = MockitoJUnit.rule();
-
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
-    private static final String TEST_DEVICE_NAME1 = "test1";
-    private static final String TEST_DEVICE_NAME2 = "test2";
-
-    @Mock private CachedBluetoothDevice mCachedDevice1;
-    @Mock private CachedBluetoothDevice mCachedDevice2;
-    private Fragment mParent;
-    private AudioSharingStopDialogFragment mFragment;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
-
-    @Before
-    public void setUp() {
-        AlertDialog latestAlertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        if (latestAlertDialog != null) {
-            latestAlertDialog.dismiss();
-            ShadowAlertDialogCompat.reset();
-        }
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        when(mCachedDevice1.getName()).thenReturn(TEST_DEVICE_NAME1);
-        when(mCachedDevice2.getName()).thenReturn(TEST_DEVICE_NAME2);
-        mFragment = new AudioSharingStopDialogFragment();
-        mParent = new Fragment();
-        FragmentController.setupFragment(
-                mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
-    }
-
-    @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOff_dialogNotExist() {
-        mFragment.show(mParent, mCachedDevice1, () -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNull();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_dialogIsShowing_updateDialog() {
-        String postMessage = " wants to connect, headphones in audio sharing will disconnect.";
-        mFragment.show(mParent, mCachedDevice1, () -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNotNull();
-        assertThat(dialog.isShowing()).isTrue();
-        ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        assertThat(shadowDialog.getMessage().toString()).isEqualTo(TEST_DEVICE_NAME1 + postMessage);
-
-        // Update the content
-        mFragment.show(mParent, mCachedDevice2, () -> {});
-        shadowMainLooper().idle();
-        dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNotNull();
-        assertThat(dialog.isShowing()).isTrue();
-        shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
-        assertThat(shadowDialog.getMessage().toString()).isEqualTo(TEST_DEVICE_NAME2 + postMessage);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_clickCancel_dialogDismiss() {
-        mFragment.show(mParent, mCachedDevice1, () -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        dialog.findViewById(android.R.id.button2).performClick();
-        shadowMainLooper().idle();
-        assertThat(dialog.isShowing()).isFalse();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_clickShare_callbackTriggered() {
-        AtomicBoolean isStopBtnClicked = new AtomicBoolean(false);
-        mFragment.show(mParent, mCachedDevice1, () -> isStopBtnClicked.set(true));
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        dialog.findViewById(android.R.id.button1).performClick();
-        shadowMainLooper().idle();
-        assertThat(dialog.isShowing()).isFalse();
-        assertThat(isStopBtnClicked.get()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java
deleted file mode 100644
index 11e8ec9..0000000
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java
+++ /dev/null
@@ -1,85 +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.
- */
-
-package com.android.settings.connecteddevice.audiosharing;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.robolectric.Shadows.shadowOf;
-
-import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Looper;
-import android.platform.test.annotations.RequiresFlagsEnabled;
-import android.platform.test.flag.junit.CheckFlagsRule;
-import android.platform.test.flag.junit.DeviceFlagsValueProvider;
-import android.widget.Switch;
-
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.flags.Flags;
-import com.android.settings.widget.SettingsMainSwitchBar;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class AudioSharingSwitchBarControllerTest {
-    @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
-
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
-    @Spy Context mContext = ApplicationProvider.getApplicationContext();
-    @Mock private Switch mSwitch;
-
-    private SettingsMainSwitchBar mSwitchBar;
-    private AudioSharingSwitchBarController mController;
-    private AudioSharingSwitchBarController.OnSwitchBarChangedListener mListener;
-    private boolean mOnSwitchBarChanged;
-
-    @Before
-    public void setUp() {
-        mSwitchBar = new SettingsMainSwitchBar(mContext);
-        mOnSwitchBarChanged = false;
-        mListener = () -> mOnSwitchBarChanged = true;
-        mController = new AudioSharingSwitchBarController(mContext, mSwitchBar, mListener);
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void bluetoothOff_switchDisabled() {
-        assertThat(mSwitchBar.isEnabled()).isTrue();
-        mContext.registerReceiver(
-                mController.mReceiver,
-                mController.mIntentFilter,
-                Context.RECEIVER_EXPORTED_UNAUDITED);
-        Intent intent = new Intent(BluetoothAdapter.ACTION_STATE_CHANGED);
-        intent.putExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.STATE_OFF);
-        mContext.sendBroadcast(intent);
-        shadowOf(Looper.getMainLooper()).idle();
-        assertThat(mSwitchBar.isEnabled()).isFalse();
-        assertThat(mOnSwitchBarChanged).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsDialogFragmentTest.java
deleted file mode 100644
index 58a1272..0000000
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsDialogFragmentTest.java
+++ /dev/null
@@ -1,110 +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 com.android.settings.connecteddevice.audiosharing;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothStatusCodes;
-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 androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.settings.flags.Flags;
-import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.androidx.fragment.FragmentController;
-
-import java.util.ArrayList;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(
-        shadows = {
-            ShadowAlertDialogCompat.class,
-            ShadowBluetoothAdapter.class,
-        })
-public class CallsAndAlarmsDialogFragmentTest {
-    @Rule public final MockitoRule mocks = MockitoJUnit.rule();
-
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
-    private static final String TEST_DEVICE_NAME1 = "test1";
-    private static final String TEST_DEVICE_NAME2 = "test2";
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM1 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME1, /* groupId= */ 1, /* isActive= */ true);
-
-    private static final AudioSharingDeviceItem TEST_DEVICE_ITEM2 =
-            new AudioSharingDeviceItem(TEST_DEVICE_NAME2, /* groupId= */ 1, /* isActive= */ true);
-
-    private Fragment mParent;
-    private CallsAndAlarmsDialogFragment mFragment;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
-
-    @Before
-    public void setUp() {
-        ShadowAlertDialogCompat.reset();
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mFragment = new CallsAndAlarmsDialogFragment();
-        mParent = new Fragment();
-        FragmentController.setupFragment(
-                mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
-    }
-
-    @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_flagOff_dialogNotExist() {
-        mFragment.show(mParent, new ArrayList<>(), (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog).isNull();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void onCreateDialog_showCorrectItems() {
-        ArrayList<AudioSharingDeviceItem> deviceItemList = new ArrayList<>();
-        deviceItemList.add(TEST_DEVICE_ITEM1);
-        deviceItemList.add(TEST_DEVICE_ITEM2);
-        mFragment.show(mParent, deviceItemList, (item) -> {});
-        shadowMainLooper().idle();
-        AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-        assertThat(dialog.getListView().getCount()).isEqualTo(2);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsPreferenceControllerTest.java
deleted file mode 100644
index 4cdd364..0000000
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/CallsAndAlarmsPreferenceControllerTest.java
+++ /dev/null
@@ -1,248 +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 com.android.settings.connecteddevice.audiosharing;
-
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.robolectric.Shadows.shadowOf;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothLeBroadcastAssistant;
-import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.bluetooth.BluetoothProfile;
-import android.bluetooth.BluetoothStatusCodes;
-import android.content.Context;
-import android.os.Looper;
-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.provider.Settings;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.bluetooth.Utils;
-import com.android.settings.flags.Flags;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
-import com.android.settingslib.bluetooth.BluetoothEventManager;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
-import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.ArrayList;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(
-        shadows = {
-            ShadowBluetoothAdapter.class,
-            ShadowBluetoothUtils.class,
-        })
-public class CallsAndAlarmsPreferenceControllerTest {
-    private static final String PREF_KEY = "calls_and_alarms";
-    private static final String SUMMARY_EMPTY = "No active device in sharing";
-    private static final String TEST_DEVICE_NAME1 = "test1";
-    private static final String TEST_DEVICE_NAME2 = "test2";
-    private static final String TEST_SETTINGS_KEY =
-            "bluetooth_le_broadcast_fallback_active_group_id";
-
-    @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
-
-    @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
-
-    @Spy Context mContext = ApplicationProvider.getApplicationContext();
-    @Mock private PreferenceScreen mScreen;
-    @Mock private LocalBluetoothManager mLocalBtManager;
-    @Mock private BluetoothEventManager mBtEventManager;
-    @Mock private LocalBluetoothProfileManager mLocalBtProfileManager;
-    @Mock private CachedBluetoothDeviceManager mCacheManager;
-    @Mock private LocalBluetoothLeBroadcast mBroadcast;
-    @Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
-    @Mock private BluetoothDevice mDevice1;
-    @Mock private BluetoothDevice mDevice2;
-    @Mock private BluetoothDevice mDevice3;
-    @Mock private CachedBluetoothDevice mCachedDevice1;
-    @Mock private CachedBluetoothDevice mCachedDevice2;
-    @Mock private CachedBluetoothDevice mCachedDevice3;
-    @Mock private BluetoothLeBroadcastReceiveState mState;
-    private CallsAndAlarmsPreferenceController mController;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private Lifecycle mLifecycle;
-    private LifecycleOwner mLifecycleOwner;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
-                BluetoothStatusCodes.FEATURE_SUPPORTED);
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBtManager;
-        mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
-        when(mLocalBluetoothManager.getEventManager()).thenReturn(mBtEventManager);
-        when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBtProfileManager);
-        when(mLocalBtProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast);
-        when(mLocalBtProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(mAssistant);
-        mController = new CallsAndAlarmsPreferenceController(mContext);
-        mPreference = new Preference(mContext);
-        when(mScreen.findPreference(PREF_KEY)).thenReturn(mPreference);
-    }
-
-    @Test
-    public void onStart_registerCallback() {
-        mController.onStart(mLifecycleOwner);
-        verify(mBtEventManager).registerCallback(mController);
-        verify(mAssistant)
-                .registerServiceCallBack(any(), any(BluetoothLeBroadcastAssistant.Callback.class));
-    }
-
-    @Test
-    public void onStop_unregisterCallback() {
-        mController.onStop(mLifecycleOwner);
-        verify(mBtEventManager).unregisterCallback(mController);
-        verify(mAssistant)
-                .unregisterServiceCallBack(any(BluetoothLeBroadcastAssistant.Callback.class));
-    }
-
-    @Test
-    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void getAvailabilityStatus_flagOn() {
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
-    public void getAvailabilityStatus_flagOff() {
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void updateVisibility_broadcastOffBluetoothOff() {
-        when(mBroadcast.isEnabled(any())).thenReturn(false);
-        mShadowBluetoothAdapter.setEnabled(false);
-        mController.displayPreference(mScreen);
-        mController.updateVisibility();
-        shadowOf(Looper.getMainLooper()).idle();
-        assertThat(mPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void updateVisibility_broadcastOnBluetoothOff() {
-        when(mBroadcast.isEnabled(any())).thenReturn(true);
-        mShadowBluetoothAdapter.setEnabled(false);
-        mController.displayPreference(mScreen);
-        mController.updateVisibility();
-        shadowOf(Looper.getMainLooper()).idle();
-        assertThat(mPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void updateVisibility_broadcastOffBluetoothOn() {
-        when(mBroadcast.isEnabled(any())).thenReturn(false);
-        mController.displayPreference(mScreen);
-        mController.updateVisibility();
-        shadowOf(Looper.getMainLooper()).idle();
-        assertThat(mPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void updateVisibility_broadcastOnBluetoothOn() {
-        when(mBroadcast.isEnabled(any())).thenReturn(true);
-        when(mAssistant.getConnectedDevices()).thenReturn(new ArrayList<BluetoothDevice>());
-        mController.displayPreference(mScreen);
-        mController.updateVisibility();
-        shadowOf(Looper.getMainLooper()).idle();
-        assertThat(mPreference.isVisible()).isTrue();
-        assertThat(mPreference.getSummary().toString()).isEqualTo(SUMMARY_EMPTY);
-    }
-
-    @Test
-    public void onProfileConnectionStateChanged_updatePreference() {
-        when(mBroadcast.isEnabled(any())).thenReturn(true);
-        when(mAssistant.getConnectedDevices()).thenReturn(new ArrayList<BluetoothDevice>());
-        mController.displayPreference(mScreen);
-        mController.onProfileConnectionStateChanged(
-                mCachedDevice1, BluetoothAdapter.STATE_DISCONNECTED, BluetoothProfile.LE_AUDIO);
-        shadowOf(Looper.getMainLooper()).idle();
-        assertThat(mPreference.isVisible()).isTrue();
-        assertThat(mPreference.getSummary().toString()).isEqualTo(SUMMARY_EMPTY);
-    }
-
-    @Test
-    public void updatePreference_showCorrectSummary() {
-        final int groupId1 = 1;
-        final int groupId2 = 2;
-        Settings.Secure.putInt(mContext.getContentResolver(), TEST_SETTINGS_KEY, groupId1);
-        when(mCachedDevice1.getGroupId()).thenReturn(groupId1);
-        when(mCachedDevice1.getDevice()).thenReturn(mDevice1);
-        when(mCachedDevice2.getGroupId()).thenReturn(groupId1);
-        when(mCachedDevice2.getDevice()).thenReturn(mDevice2);
-        when(mCachedDevice1.getMemberDevice()).thenReturn(ImmutableSet.of(mCachedDevice2));
-        when(mCachedDevice1.getName()).thenReturn(TEST_DEVICE_NAME1);
-        when(mCachedDevice3.getGroupId()).thenReturn(groupId2);
-        when(mCachedDevice3.getDevice()).thenReturn(mDevice3);
-        when(mCachedDevice3.getName()).thenReturn(TEST_DEVICE_NAME2);
-        when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mCacheManager);
-        when(mCacheManager.findDevice(mDevice1)).thenReturn(mCachedDevice1);
-        when(mCacheManager.findDevice(mDevice2)).thenReturn(mCachedDevice2);
-        when(mCacheManager.findDevice(mDevice3)).thenReturn(mCachedDevice3);
-        when(mBroadcast.isEnabled(any())).thenReturn(true);
-        ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice2, mDevice3);
-        when(mAssistant.getConnectedDevices()).thenReturn(deviceList);
-        when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(mState));
-        mController.displayPreference(mScreen);
-        mController.updateVisibility();
-        shadowOf(Looper.getMainLooper()).idle();
-        assertThat(mPreference.isVisible()).isTrue();
-        assertThat(mPreference.getSummary().toString()).isEqualTo(TEST_DEVICE_NAME1);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceControllerTest.java
index 8aa2e5a..ce47052 100644
--- a/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceControllerTest.java
@@ -25,6 +25,7 @@
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -163,6 +164,81 @@
         mController.onRebuildComplete(createAppEntries(testPkg1, testPkg2));
     }
 
+    @Test
+    public void onRebuildComplete_ecmRestricted_shouldBeDisabled() {
+        mFragment = spy(new UnrestrictedDataAccess());
+        mContext = spy(mContext);
+        doNothing().when(mFragment).setLoading(anyBoolean(), anyBoolean());
+        mController.setParentFragment(mFragment);
+        mPreferenceManager = new PreferenceManager(mContext);
+        mPreferenceScreen = spy(mPreferenceManager.createPreferenceScreen(mContext));
+        doReturn(mPreferenceManager).when(mFragment).getPreferenceManager();
+        doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen();
+        doReturn(0).when(mPreferenceScreen).getPreferenceCount();
+        final DataSaverBackend dataSaverBackend = mock(DataSaverBackend.class);
+        ReflectionHelpers.setField(mController, "mDataSaverBackend", dataSaverBackend);
+        ReflectionHelpers.setField(mController, "mScreen", mPreferenceScreen);
+
+        final String testPkg = "com.example.disabled";
+        doNothing().when(mContext).startActivity(any());
+        ShadowRestrictedLockUtilsInternal.setEcmRestrictedPkgs(testPkg);
+
+        doAnswer((invocation) -> {
+            final UnrestrictedDataAccessPreference preference = invocation.getArgument(0);
+            // Verify preference is disabled by ecm and the summary is changed accordingly.
+            assertThat(preference.isDisabledByEcm()).isTrue();
+            assertThat(preference.getSummary().toString()).isEqualTo(
+                    mContext.getString(
+                            com.android.settingslib.R.string.disabled_by_app_ops_text));
+            assertThat(preference.isChecked()).isFalse();
+            preference.performClick();
+            // Verify that when the preference is clicked, ecm details intent is launched
+            assertThat(preference.isChecked()).isFalse();
+            verify(mContext).startActivity(any());
+
+            return null;
+        }).when(mPreferenceScreen).addPreference(any(UnrestrictedDataAccessPreference.class));
+
+        mController.onRebuildComplete(createAppEntries(testPkg));
+        verify(mPreferenceScreen).addPreference(any(UnrestrictedDataAccessPreference.class));
+    }
+
+    @Test
+    public void onRebuildComplete_ecmNotRestricted_notDisabled() {
+        mFragment = spy(new UnrestrictedDataAccess());
+        mContext = spy(mContext);
+        doNothing().when(mFragment).setLoading(anyBoolean(), anyBoolean());
+        mController.setParentFragment(mFragment);
+        mPreferenceManager = new PreferenceManager(mContext);
+        mPreferenceScreen = spy(mPreferenceManager.createPreferenceScreen(mContext));
+        doReturn(mPreferenceManager).when(mFragment).getPreferenceManager();
+        doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen();
+        doReturn(0).when(mPreferenceScreen).getPreferenceCount();
+        final DataSaverBackend dataSaverBackend = mock(DataSaverBackend.class);
+        ReflectionHelpers.setField(mController, "mDataSaverBackend", dataSaverBackend);
+        ReflectionHelpers.setField(mController, "mScreen", mPreferenceScreen);
+
+        final String testPkg = "com.example.enabled";
+        doNothing().when(mContext).startActivity(any());
+        ShadowRestrictedLockUtilsInternal.setEcmRestrictedPkgs();
+
+        doAnswer((invocation) -> {
+            final UnrestrictedDataAccessPreference preference = invocation.getArgument(0);
+            assertThat(preference.isDisabledByEcm()).isFalse();
+            assertThat(preference.getSummary()).isEqualTo("");
+            assertThat(preference.isChecked()).isFalse();
+            preference.performClick();
+            // Verify that when the preference is clicked, ecm details intent is not launched
+            assertThat(preference.isChecked()).isTrue();
+            verify(mContext, never()).startActivity(any());
+
+            return null;
+        }).when(mPreferenceScreen).addPreference(any(UnrestrictedDataAccessPreference.class));
+
+        mController.onRebuildComplete(createAppEntries(testPkg));
+        verify(mPreferenceScreen).addPreference(any(UnrestrictedDataAccessPreference.class));
+    }
+
     private ArrayList<AppEntry> createAppEntries(String... packageNames) {
         final ArrayList<AppEntry> appEntries = new ArrayList<>();
         for (int i = 0; i < packageNames.length; ++i) {
diff --git a/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java
index 314120a..c7c76b1 100644
--- a/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.development;
 
+import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED;
+
 import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
 import static com.android.settings.development.ForcePeakRefreshRatePreferenceController.NO_CONFIG;
 
@@ -24,15 +26,18 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.content.Context;
+import android.hardware.display.DisplayManager;
 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.provider.Settings;
+import android.testing.TestableContext;
+import android.view.Display;
 
 import androidx.preference.PreferenceScreen;
 import androidx.preference.SwitchPreference;
+import androidx.test.platform.app.InstrumentationRegistry;
 
 import com.android.server.display.feature.flags.Flags;
 
@@ -43,7 +48,6 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
 @RunWith(RobolectricTestRunner.class)
@@ -53,17 +57,51 @@
     private SwitchPreference mPreference;
     @Mock
     private PreferenceScreen mScreen;
+    @Mock
+    private DisplayManager mDisplayManagerMock;
+    @Mock
+    private Display mDisplayMock;
+    @Mock
+    private Display mDisplayMock2;
 
-    private Context mContext;
     private ForcePeakRefreshRatePreferenceController mController;
 
     @Rule
     public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+    @Rule
+    public final TestableContext mContext = new TestableContext(
+            InstrumentationRegistry.getInstrumentation().getContext());
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
+        mContext.addMockSystemService(DisplayManager.class, mDisplayManagerMock);
+
+        Display.Mode[] modes = new Display.Mode[]{
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 60),
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 120),
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 90)
+        };
+        when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(mDisplayMock);
+        when(mDisplayMock.getSupportedModes()).thenReturn(modes);
+
+        Display.Mode[] modes2 = new Display.Mode[]{
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 70),
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 130),
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 80)
+        };
+        when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY + 1)).thenReturn(mDisplayMock2);
+        when(mDisplayMock2.getSupportedModes()).thenReturn(modes2);
+
+        when(mDisplayManagerMock.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED))
+                .thenReturn(new Display[]{ mDisplayMock, mDisplayMock2 });
+
         mController = new ForcePeakRefreshRatePreferenceController(mContext);
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
         when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
@@ -153,4 +191,16 @@
         assertThat(mPreference.isChecked()).isFalse();
         assertThat(mPreference.isEnabled()).isFalse();
     }
+
+    @Test
+    @RequiresFlagsDisabled(Flags.FLAG_BACK_UP_SMOOTH_DISPLAY_AND_FORCE_PEAK_REFRESH_RATE)
+    public void peakRefreshRate_highestOfDefaultDisplay_featureFlagOff() {
+        assertThat(mController.mPeakRefreshRate).isEqualTo(120);
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_BACK_UP_SMOOTH_DISPLAY_AND_FORCE_PEAK_REFRESH_RATE)
+    public void peakRefreshRate_highestOfAllDisplays_featureFlagOn() {
+        assertThat(mController.mPeakRefreshRate).isEqualTo(130);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/display/EvenDimmerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/EvenDimmerPreferenceControllerTest.java
new file mode 100644
index 0000000..a3cf151
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/EvenDimmerPreferenceControllerTest.java
@@ -0,0 +1,114 @@
+/*
+ * 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 com.android.settings.display;
+
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.res.Resources;
+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.provider.Settings;
+
+import com.android.server.display.feature.flags.Flags;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class EvenDimmerPreferenceControllerTest {
+
+    private EvenDimmerPreferenceController mController;
+    @Mock
+    private Context mContext;
+    @Mock
+    private Resources mResources;
+
+    @Rule
+    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getResources()).thenReturn(mResources);
+        mController = new EvenDimmerPreferenceController(mContext, "key");
+    }
+
+    @RequiresFlagsDisabled(Flags.FLAG_EVEN_DIMMER)
+    @Test
+    public void testGetAvailabilityStatus_flagOffconfigTrue() {
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_evenDimmerEnabled)).thenReturn(true);
+        // setup
+        mController = new EvenDimmerPreferenceController(mContext, "key");
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @RequiresFlagsDisabled(Flags.FLAG_EVEN_DIMMER)
+    @Test
+    public void testGetCheckedStatus_setTrue() throws Settings.SettingNotFoundException {
+        // setup
+        mController = new EvenDimmerPreferenceController(mContext, "key");
+        mController.setChecked(true);
+
+        assertThat(Settings.Secure.getFloat(mContext.getContentResolver(),
+                Settings.Secure.EVEN_DIMMER_ACTIVATED)).isEqualTo(0.0f); // false
+    }
+
+    @RequiresFlagsEnabled(Flags.FLAG_EVEN_DIMMER)
+    @Test
+    public void testGetAvailabilityStatus_flagOnConfigTrue() {
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_evenDimmerEnabled)).thenReturn(true);
+        // setup
+        mController = new EvenDimmerPreferenceController(mContext, "key");
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_EVEN_DIMMER)
+    public void testSetChecked_enable() throws Settings.SettingNotFoundException {
+        mController.setChecked(true);
+        assertThat(Settings.Secure.getFloat(mContext.getContentResolver(),
+                Settings.Secure.EVEN_DIMMER_ACTIVATED)).isEqualTo(1.0f); // true
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_EVEN_DIMMER)
+    public void testSetChecked_disable() throws Settings.SettingNotFoundException {
+        mController.setChecked(false);
+        assertThat(Settings.Secure.getFloat(mContext.getContentResolver(),
+                Settings.Secure.EVEN_DIMMER_ACTIVATED)).isEqualTo(0.0f); // false
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java
index cb0963b..f8e91bd 100644
--- a/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.display;
 
+import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED;
+
 import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
 import static com.android.settings.core.BasePreferenceController.AVAILABLE;
 import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
@@ -24,14 +26,17 @@
 
 import static org.mockito.Mockito.when;
 
-import android.content.Context;
+import android.hardware.display.DisplayManager;
 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.provider.Settings;
+import android.testing.TestableContext;
+import android.view.Display;
 
 import androidx.preference.SwitchPreference;
+import androidx.test.platform.app.InstrumentationRegistry;
 
 import com.android.server.display.feature.flags.Flags;
 
@@ -48,21 +53,55 @@
 @RunWith(RobolectricTestRunner.class)
 public class PeakRefreshRatePreferenceControllerTest {
 
-    private Context mContext;
     private PeakRefreshRatePreferenceController mController;
     private SwitchPreference mPreference;
 
     @Mock
     private PeakRefreshRatePreferenceController.DeviceConfigDisplaySettings
             mDeviceConfigDisplaySettings;
+    @Mock
+    private DisplayManager mDisplayManagerMock;
+    @Mock
+    private Display mDisplayMock;
+    @Mock
+    private Display mDisplayMock2;
 
     @Rule
     public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+    @Rule
+    public final TestableContext mContext = new TestableContext(
+            InstrumentationRegistry.getInstrumentation().getContext());
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
+        mContext.addMockSystemService(DisplayManager.class, mDisplayManagerMock);
+
+        Display.Mode[] modes = new Display.Mode[]{
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 60),
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 120),
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 90)
+        };
+        when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(mDisplayMock);
+        when(mDisplayMock.getSupportedModes()).thenReturn(modes);
+
+        Display.Mode[] modes2 = new Display.Mode[]{
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 70),
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 130),
+                new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600,
+                        /* refreshRate= */ 80)
+        };
+        when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY + 1)).thenReturn(mDisplayMock2);
+        when(mDisplayMock2.getSupportedModes()).thenReturn(modes2);
+
+        when(mDisplayManagerMock.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED))
+                .thenReturn(new Display[]{ mDisplayMock, mDisplayMock2 });
+
         mController = new PeakRefreshRatePreferenceController(mContext, "key");
         mController.injectDeviceConfigDisplaySettings(mDeviceConfigDisplaySettings);
         mPreference = new SwitchPreference(RuntimeEnvironment.application);
@@ -152,4 +191,16 @@
 
         assertThat(mController.isChecked()).isFalse();
     }
+
+    @Test
+    @RequiresFlagsDisabled(Flags.FLAG_BACK_UP_SMOOTH_DISPLAY_AND_FORCE_PEAK_REFRESH_RATE)
+    public void peakRefreshRate_highestOfDefaultDisplay_featureFlagOff() {
+        assertThat(mController.mPeakRefreshRate).isEqualTo(120);
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_BACK_UP_SMOOTH_DISPLAY_AND_FORCE_PEAK_REFRESH_RATE)
+    public void peakRefreshRate_highestOfAllDisplays_featureFlagOn() {
+        assertThat(mController.mPeakRefreshRate).isEqualTo(130);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
index 0339f57..e99c4e0 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
@@ -64,7 +64,7 @@
     private static final String STATUS_CHARGING_NO_TIME = "50% - charging";
     private static final String STATUS_CHARGING_TIME = "50% - 0 min left until full";
     private static final String STATUS_NOT_CHARGING = "Not charging";
-    private static final String STATUS_CHARGING_FUTURE_BYPASS = "50% - Charging optimized";
+    private static final String STATUS_CHARGING_FUTURE_BYPASS = "50% - Charging";
     private static final String STATUS_CHARGING_PAUSED = "50% - Charging optimized";
     private static final long REMAINING_TIME_NULL = -1;
     private static final long REMAINING_TIME = 2;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTipTest.java
index 4efd850..a605ee3 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTipTest.java
@@ -82,7 +82,7 @@
     @Test
     public void getIcon_showIcon() {
         assertThat(mBatteryDefenderTip.getIconId())
-                .isEqualTo(R.drawable.ic_battery_status_good_theme);
+                .isEqualTo(R.drawable.ic_battery_defender_tip_shield);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/network/SubscriptionUtilRoboTest.java b/tests/robotests/src/com/android/settings/network/SubscriptionUtilRoboTest.java
new file mode 100644
index 0000000..2595510
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/network/SubscriptionUtilRoboTest.java
@@ -0,0 +1,82 @@
+/*
+ * 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 com.android.settings.network;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+import static org.mockito.ArgumentMatchers.any;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
+import android.telephony.SubscriptionManager;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.shadows.ShadowSubscriptionManager;
+
+@RunWith(RobolectricTestRunner.class)
+public class SubscriptionUtilRoboTest {
+    private static final int SUBID_1 = 1;
+    private static final int SUBID_2 = 2;
+
+    private Context mContext;
+    private NetworkCapabilities mNetworkCapabilities;
+    private ShadowSubscriptionManager mShadowSubscriptionManager;
+
+    @Mock
+    private ConnectivityManager mConnectivityManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class));
+        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
+    }
+
+    @Test
+    public void isConnectedToWifiOrDifferentSubId_hasDataOnSubId2_returnTrue() {
+        addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
+        mShadowSubscriptionManager.setActiveDataSubscriptionId(SUBID_2);
+
+        assertTrue(SubscriptionUtil.isConnectedToWifiOrDifferentSubId(mContext, SUBID_1));
+    }
+
+    @Test
+    public void isConnectedToWifiOrDifferentSubId_hasDataOnSubId1_returnFalse() {
+        addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
+        mShadowSubscriptionManager.setActiveDataSubscriptionId(SUBID_1);
+
+        assertFalse(SubscriptionUtil.isConnectedToWifiOrDifferentSubId(mContext, SUBID_1));
+    }
+
+    private void addNetworkTransportType(int networkType) {
+        mNetworkCapabilities =
+                new NetworkCapabilities.Builder().addTransportType(networkType).build();
+        when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn(mNetworkCapabilities);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceControllerTest.java
index 758d6b0..29592cf 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceControllerTest.java
@@ -30,12 +30,19 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
+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.telephony.TelephonyManager;
 
 import androidx.preference.PreferenceScreen;
 import androidx.preference.SwitchPreference;
 
+import com.android.settings.flags.Flags;
+
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -52,6 +59,9 @@
     private static final int SUB_ID_1 = 111;
     private static final int SUB_ID_2 = 222;
 
+    @Rule
+    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
     @Mock
     private TelephonyManager mTelephonyManager;
     @Mock
@@ -79,6 +89,7 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
     public void getAvailabilityStatus_noInit_notAvailable() {
         ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
         AutoDataSwitchPreferenceController controller =
@@ -90,6 +101,7 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
     public void displayPreference_defaultForData_notAvailable() {
         ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
 
@@ -100,6 +112,7 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
     public void  displayPreference_notDefaultForData_available() {
         ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_2);
 
@@ -110,6 +123,7 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
     public void onSubscriptionsChanged_becomesDefaultForData_notAvailable() {
         ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_2);
 
@@ -122,6 +136,7 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
     public void onSubscriptionsChanged_noLongerDefaultForData_available() {
         ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
 
@@ -134,6 +149,7 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
     public void getAvailabilityStatus_mobileDataChangWithDefaultDataSubId_returnUnavailable() {
         ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
 
@@ -144,6 +160,7 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
     public void getAvailabilityStatus_mobileDataChangWithoutDefaultDataSubId_returnAvailable() {
         ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
 
@@ -152,4 +169,16 @@
 
         assertThat(mController.getAvailabilityStatus(SUB_ID_2)).isEqualTo(AVAILABLE);
     }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
+    public void getAvailabilityStatus_flagIsDualSimOnboardingEnabledOn_returnUnavailable() {
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
+
+        mController.displayPreference(mPreferenceScreen);
+        mController.refreshPreference();
+
+        assertThat(mController.getAvailabilityStatus(SUB_ID_1))
+                .isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index f349600..8a7419b 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -20,7 +20,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.app.settings.SettingsEnums;
-import android.content.ComponentName;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ResolveInfo;
@@ -131,20 +130,22 @@
 
     @Test(expected = SecurityException.class)
     public void verifyLaunchSearchResultPageCaller_badCaller_shouldCrash() {
-        final ComponentName cn = new ComponentName("pkg", "class");
-        mProvider.verifyLaunchSearchResultPageCaller(mActivity, cn);
+        final String packageName = "pkg";
+
+        mProvider.verifyLaunchSearchResultPageCaller(mActivity, packageName);
     }
 
     @Test
     public void verifyLaunchSearchResultPageCaller_settingsCaller_shouldNotCrash() {
-        final ComponentName cn = new ComponentName(mActivity.getPackageName(), "class");
-        mProvider.verifyLaunchSearchResultPageCaller(mActivity, cn);
+        final String packageName = mActivity.getPackageName();
+
+        mProvider.verifyLaunchSearchResultPageCaller(mActivity, packageName);
     }
 
     @Test
     public void verifyLaunchSearchResultPageCaller_settingsIntelligenceCaller_shouldNotCrash() {
         final String packageName = mProvider.getSettingsIntelligencePkgName(mActivity);
-        final ComponentName cn = new ComponentName(packageName, "class");
-        mProvider.verifyLaunchSearchResultPageCaller(mActivity, cn);
+
+        mProvider.verifyLaunchSearchResultPageCaller(mActivity, packageName);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java b/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
index 635343e..c38e36a 100644
--- a/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
+++ b/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
@@ -2,53 +2,56 @@
 
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
-import android.content.Context;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.testing.FragmentScenario;
+import androidx.test.core.app.ApplicationProvider;
 
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.overlay.SurveyFeatureProvider;
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
-import org.junit.Ignore;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 @RunWith(RobolectricTestRunner.class)
 public class SurveyMixinTest {
+    @Rule
+    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
 
     private static final String FAKE_KEY = "fake_key";
-
-    private Context mContext;
     private SurveyFeatureProvider mProvider;
-    @Mock
-    private InstrumentedPreferenceFragment mFragment;
 
     @Before
     public void setUp() {
         // set up the fakefeature factory to mock out the survey provider
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mProvider = FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(mContext);
+        mProvider = FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(
+                ApplicationProvider.getApplicationContext());
     }
 
-    @Ignore("b/314929422")
     @Test
     public void onResume_noActionIfActivityDoesNotExist() {
-        // Pretend we are an activity that is starting up
-        FragmentActivity temp = Robolectric.setupActivity(FragmentActivity.class);
-        when(mFragment.getActivity()).thenReturn(null);
-        SurveyMixin mixin = new SurveyMixin(mFragment, FAKE_KEY);
+        // Initialize a fragment without associating with an activity
+        Fragment fragment = new Fragment();
+        SurveyMixin mixin = new SurveyMixin(fragment, FAKE_KEY);
         mixin.onResume();
 
         verify(mProvider, times(0)).sendActivityIfAvailable(FAKE_KEY);
     }
+
+    @Test
+    public void onResume_sendActivityWhenSurveyFeatureExists() {
+        try (var fragmentScenario = FragmentScenario.launch(Fragment.class)) {
+            fragmentScenario.onFragment(fragment -> {
+                SurveyMixin mixin = new SurveyMixin(fragment, FAKE_KEY);
+                mixin.onResume();
+            });
+        }
+        // Verify one send activity action is attempted
+        verify(mProvider).sendActivityIfAvailable(FAKE_KEY);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowRestrictedLockUtilsInternal.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowRestrictedLockUtilsInternal.java
index 5989d49..e03134b 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowRestrictedLockUtilsInternal.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowRestrictedLockUtilsInternal.java
@@ -15,9 +15,11 @@
  */
 package com.android.settings.testutils.shadow;
 
+import android.annotation.NonNull;
 import android.annotation.UserIdInt;
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
+import android.content.Intent;
 
 import com.android.internal.util.ArrayUtils;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -38,6 +40,8 @@
     private static DevicePolicyManager sDevicePolicyManager;
     private static String[] sDisabledTypes;
     private static int sKeyguardDisabledFeatures;
+    private static String[] sEcmRestrictedPkgs;
+    private static boolean sAccessibilityServiceRestricted;
 
     @Resetter
     public static void reset() {
@@ -47,6 +51,8 @@
         sDisabledTypes = new String[0];
         sMaximumTimeToLockIsSet = false;
         sMteOverridden = false;
+        sEcmRestrictedPkgs = new String[0];
+        sAccessibilityServiceRestricted = false;
     }
 
     @Implementation
@@ -108,10 +114,35 @@
         return sMteOverridden ? new EnforcedAdmin() : null;
     }
 
+    public static EnforcedAdmin checkIfAccessibilityServiceDisallowed(Context context,
+            String packageName, int userId) {
+        return sAccessibilityServiceRestricted ? new EnforcedAdmin() : null;
+    }
+
+    @Implementation
+    public static Intent checkIfRequiresEnhancedConfirmation(@NonNull Context context,
+            @NonNull String settingIdentifier, @NonNull String packageName) {
+        if (ArrayUtils.contains(sEcmRestrictedPkgs, packageName)) {
+            return new Intent();
+        }
+
+        return null;
+    }
+
+    @Implementation
+    public static boolean isEnhancedConfirmationRestricted(@NonNull Context context,
+            @NonNull String settingIdentifier, @NonNull String packageName) {
+        return false;
+    }
+
     public static void setRestricted(boolean restricted) {
         sIsRestricted = restricted;
     }
 
+    public static void setEcmRestrictedPkgs(String... pkgs) {
+        sEcmRestrictedPkgs = pkgs;
+    }
+
     public static void setRestrictedPkgs(String... pkgs) {
         sRestrictedPkgs = pkgs;
     }
diff --git a/tests/robotests/testutils/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/testutils/com/android/settings/testutils/FakeFeatureFactory.java
index a11b226..f49cc68 100644
--- a/tests/robotests/testutils/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/robotests/testutils/com/android/settings/testutils/FakeFeatureFactory.java
@@ -27,6 +27,7 @@
 import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider;
 import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
 import com.android.settings.bluetooth.BluetoothFeatureProvider;
+import com.android.settings.connecteddevice.audiosharing.AudioSharingFeatureProvider;
 import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider;
 import com.android.settings.connecteddevice.stylus.StylusFeatureProvider;
 import com.android.settings.dashboard.DashboardFeatureProvider;
@@ -103,6 +104,7 @@
     public FastPairFeatureProvider mFastPairFeatureProvider;
     public PrivateSpaceLoginFeatureProvider mPrivateSpaceLoginFeatureProvider;
     public DisplayFeatureProvider mDisplayFeatureProvider;
+    public AudioSharingFeatureProvider mAudioSharingFeatureProvider;
 
     /**
      * Call this in {@code @Before} method of the test class to use fake factory.
@@ -152,6 +154,7 @@
         mFastPairFeatureProvider = mock(FastPairFeatureProvider.class);
         mPrivateSpaceLoginFeatureProvider =  mock(PrivateSpaceLoginFeatureProvider.class);
         mDisplayFeatureProvider = mock(DisplayFeatureProvider.class);
+        mAudioSharingFeatureProvider = mock(AudioSharingFeatureProvider.class);
     }
 
     @Override
@@ -339,5 +342,10 @@
     public DisplayFeatureProvider getDisplayFeatureProvider() {
         return mDisplayFeatureProvider;
     }
+
+    @Override
+    public AudioSharingFeatureProvider getAudioSharingFeatureProvider() {
+        return mAudioSharingFeatureProvider;
+    }
 }
 
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioManager.java b/tests/robotests/testutils/com/android/settings/testutils/shadow/ShadowAudioManager.java
similarity index 92%
rename from tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioManager.java
rename to tests/robotests/testutils/com/android/settings/testutils/shadow/ShadowAudioManager.java
index 9c06665..b465a41 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioManager.java
+++ b/tests/robotests/testutils/com/android/settings/testutils/shadow/ShadowAudioManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -38,6 +38,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+/** Robolectric shadow for the AudioManager. */
 @Implements(value = AudioManager.class)
 public class ShadowAudioManager extends org.robolectric.shadows.ShadowAudioManager {
     private int mRingerMode;
@@ -58,11 +59,13 @@
         mRingerMode = mode;
     }
 
+    /** Register audio device callback. */
     @Implementation
     public void registerAudioDeviceCallback(AudioDeviceCallback callback, Handler handler) {
         mDeviceCallbacks.add(callback);
     }
 
+    /** Unregister audio device callback. */
     @Implementation
     public void unregisterAudioDeviceCallback(AudioDeviceCallback callback) {
         if (mDeviceCallbacks.contains(callback)) {
@@ -79,10 +82,12 @@
         return mMusicActiveRemotely;
     }
 
+    /** Set output device. */
     public void setOutputDevice(int deviceCodes) {
         mDeviceCodes = deviceCodes;
     }
 
+    /** Get devices for stream. */
     @Implementation
     public int getDevicesForStream(int streamType) {
         switch (streamType) {
diff --git a/tests/screenshot/OWNERS b/tests/screenshot/OWNERS
new file mode 100644
index 0000000..fbe29d1
--- /dev/null
+++ b/tests/screenshot/OWNERS
@@ -0,0 +1,2 @@
+joshmccloskey@google.com
+jbolinger@google.com
diff --git a/tests/screenshot/assets/robolectric/fp_enroll_confirmation.png b/tests/screenshot/assets/robolectric/fp_enroll_confirmation.png
new file mode 100644
index 0000000..db9009b
--- /dev/null
+++ b/tests/screenshot/assets/robolectric/fp_enroll_confirmation.png
Binary files differ
diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt
index 84d76ff..3cd2002 100644
--- a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt
+++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt
@@ -27,6 +27,7 @@
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSIconTouchViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollConfirmationViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollEnrollingViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollIntroViewModel
@@ -103,6 +104,9 @@
   var rfpsViewModel =
     RFPSViewModel(fingerprintEnrollEnrollingViewModel, navigationViewModel, orientationInteractor)
 
+  val fingerprintEnrollConfirmationViewModel =
+    FingerprintEnrollConfirmationViewModel(navigationViewModel, interactor)
+
   var fingerprintFindSensorViewModel =
     FingerprintEnrollFindSensorViewModel(
       navigationViewModel,
@@ -131,6 +135,7 @@
           BackgroundViewModel::class.java -> backgroundViewModel
           RFPSIconTouchViewModel::class.java -> rfpsIconTouchViewModel
           FingerprintEnrollEnrollingViewModel::class.java -> fingerprintEnrollEnrollingViewModel
+          FingerprintEnrollConfirmationViewModel::class.java -> fingerprintEnrollConfirmationViewModel
           else -> null
         }
           as T
diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollConfirmationScreenshotTest.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollConfirmationScreenshotTest.kt
new file mode 100644
index 0000000..28f4fbe
--- /dev/null
+++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollConfirmationScreenshotTest.kt
@@ -0,0 +1,46 @@
+/*
+ * 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 com.android.settings.tests.screenshot.biometrics.fingerprint.fragment
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollConfirmationV2Fragment
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep
+import com.android.settings.tests.screenshot.biometrics.fingerprint.Injector
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import platform.test.screenshot.FragmentScreenshotTestRule
+import platform.test.screenshot.ViewScreenshotTestRule.Mode
+
+@RunWith(AndroidJUnit4::class)
+class FingerprintEnrollConfirmationScreenshotTest {
+  private val injector: Injector = Injector(FingerprintNavigationStep.Confirmation)
+
+  @Rule
+  @JvmField
+  var rule: FragmentScreenshotTestRule = Injector.BiometricFragmentScreenShotRule()
+
+  @Test
+  fun testConfirmation() {
+    rule.screenshotTest(
+      "fp_enroll_confirmation",
+      Mode.MatchSize,
+      FingerprintEnrollConfirmationV2Fragment(injector.factory),
+    )
+  }
+}
diff --git a/tests/spa_unit/src/com/android/settings/development/SensitiveContentProtectionPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/development/SensitiveContentProtectionPreferenceControllerTest.kt
index 18acbba..023572b 100644
--- a/tests/spa_unit/src/com/android/settings/development/SensitiveContentProtectionPreferenceControllerTest.kt
+++ b/tests/spa_unit/src/com/android/settings/development/SensitiveContentProtectionPreferenceControllerTest.kt
@@ -22,6 +22,7 @@
 import android.platform.test.flag.junit.DeviceFlagsValueProvider
 import android.provider.Settings
 import android.provider.Settings.Global.DISABLE_SCREEN_SHARE_PROTECTIONS_FOR_APPS_AND_NOTIFICATIONS
+import android.view.flags.Flags.FLAG_SENSITIVE_CONTENT_APP_PROTECTION
 import androidx.preference.Preference
 import androidx.preference.PreferenceScreen
 import androidx.preference.SwitchPreference
@@ -132,7 +133,8 @@
     @Test
     @RequiresFlagsDisabled(
         FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION,
-        FLAG_SCREENSHARE_NOTIFICATION_HIDING)
+        FLAG_SCREENSHARE_NOTIFICATION_HIDING,
+        FLAG_SENSITIVE_CONTENT_APP_PROTECTION)
     fun isAvailable_flagsDisabled_returnFalse() {
         assertFalse(controller.isAvailable)
     }
@@ -148,4 +150,10 @@
     fun isAvailable_screenshareNotificationHidingEnabled_returnTrue() {
         assertTrue(controller.isAvailable)
     }
-}
\ No newline at end of file
+
+    @Test
+    @RequiresFlagsEnabled(FLAG_SENSITIVE_CONTENT_APP_PROTECTION)
+    fun isAvailable_screenshareSensitiveContentHidingEnabled_returnTrue() {
+        assertTrue(controller.isAvailable)
+    }
+}
diff --git a/tests/spa_unit/src/com/android/settings/network/apn/ApnRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/apn/ApnRepositoryTest.kt
index ec3b754..4155318 100644
--- a/tests/spa_unit/src/com/android/settings/network/apn/ApnRepositoryTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/apn/ApnRepositoryTest.kt
@@ -58,7 +58,7 @@
     @Test
     fun getApnDataFromUri() {
         // mock out resources and the feature provider
-        val cursor = MatrixCursor(sProjection)
+        val cursor = MatrixCursor(Projection)
         cursor.addRow(
             arrayOf<Any>(
                 0,
@@ -82,7 +82,7 @@
                 1,
             )
         )
-        whenever(contentResolver.query(uri, sProjection, null, null, null)).thenReturn(cursor)
+        whenever(contentResolver.query(uri, Projection, null, null, null)).thenReturn(cursor)
 
         val apnData = getApnDataFromUri(uri, context)
 
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.kt
index fc53049..92776df 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.kt
@@ -29,7 +29,7 @@
 import androidx.preference.PreferenceManager
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.android.settings.network.telephony.ims.ImsMmTelRepository
+import com.android.settings.network.telephony.wificalling.WifiCallingRepository
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.flowOf
@@ -60,9 +60,9 @@
 
     private var callState = TelephonyManager.CALL_STATE_IDLE
 
-    private object FakeImsMmTelRepository : ImsMmTelRepository {
-        var wiFiMode = ImsMmTelManager.WIFI_MODE_UNKNOWN
-        override fun getWiFiCallingMode() = wiFiMode
+    private val mockWifiCallingRepository = mock<WifiCallingRepository> {
+        on { getWiFiCallingMode() } doReturn ImsMmTelManager.WIFI_MODE_UNKNOWN
+        on { wifiCallingReadyFlow() } doReturn flowOf(true)
     }
 
     private val callingPreferenceCategoryController =
@@ -72,7 +72,7 @@
         context = context,
         key = TEST_KEY,
         callStateFlowFactory = { flowOf(callState) },
-        imsMmTelRepositoryFactory = { FakeImsMmTelRepository },
+        wifiCallingRepositoryFactory = { mockWifiCallingRepository },
     ).init(subId = SUB_ID, callingPreferenceCategoryController)
 
     @Before
@@ -86,7 +86,9 @@
         mockTelecomManager.stub {
             on { getSimCallManagerForSubscription(SUB_ID) } doReturn null
         }
-        FakeImsMmTelRepository.wiFiMode = ImsMmTelManager.WIFI_MODE_WIFI_ONLY
+        mockWifiCallingRepository.stub {
+            on { getWiFiCallingMode() } doReturn ImsMmTelManager.WIFI_MODE_WIFI_ONLY
+        }
 
         controller.onViewCreated(TestLifecycleOwner())
         delay(100)
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/ims/ImsFeatureProvisionedFlowTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/ims/ImsFeatureProvisionedFlowTest.kt
new file mode 100644
index 0000000..75f933a
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/ims/ImsFeatureProvisionedFlowTest.kt
@@ -0,0 +1,75 @@
+/*
+ * 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 com.android.settings.network.telephony.ims
+
+import android.telephony.ims.ProvisioningManager
+import android.telephony.ims.ProvisioningManager.FeatureProvisioningCallback
+import android.telephony.ims.feature.MmTelFeature
+import android.telephony.ims.stub.ImsRegistrationImplBase
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settingslib.spa.testutils.toListWithTimeout
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.async
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.runBlocking
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doAnswer
+import org.mockito.kotlin.mock
+
+@RunWith(AndroidJUnit4::class)
+class ImsFeatureProvisionedFlowTest {
+
+    private var callback: FeatureProvisioningCallback? = null
+
+    private val mockProvisioningManager = mock<ProvisioningManager> {
+        on { registerFeatureProvisioningChangedCallback(any(), any()) } doAnswer {
+            callback = it.arguments[1] as FeatureProvisioningCallback
+            callback?.onFeatureProvisioningChanged(CAPABILITY, TECH, true)
+        }
+    }
+
+    @Test
+    fun imsFeatureProvisionedFlow_sendInitialValue() = runBlocking {
+        val flow = imsFeatureProvisionedFlow(SUB_ID, CAPABILITY, TECH, mockProvisioningManager)
+
+        val state = flow.first()
+
+        assertThat(state).isTrue()
+    }
+
+    @Test
+    fun imsFeatureProvisionedFlow_changed(): Unit = runBlocking {
+        val listDeferred = async {
+            imsFeatureProvisionedFlow(SUB_ID, CAPABILITY, TECH, mockProvisioningManager)
+                .toListWithTimeout()
+        }
+        delay(100)
+
+        callback?.onFeatureProvisioningChanged(CAPABILITY, TECH, false)
+
+        assertThat(listDeferred.await().last()).isFalse()
+    }
+
+    private companion object {
+        const val SUB_ID = 1
+        const val CAPABILITY = MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE
+        const val TECH = ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN
+    }
+}
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/ims/ImsMmTelRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/ims/ImsMmTelRepositoryTest.kt
index d5142fa..24b081a 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/ims/ImsMmTelRepositoryTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/ims/ImsMmTelRepositoryTest.kt
@@ -17,39 +17,48 @@
 package com.android.settings.network.telephony.ims
 
 import android.content.Context
-import android.telephony.CarrierConfigManager
-import android.telephony.CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL
-import android.telephony.TelephonyManager
+import android.telephony.AccessNetworkConstants
 import android.telephony.ims.ImsMmTelManager
-import androidx.core.os.persistableBundleOf
+import android.telephony.ims.ImsStateCallback
+import android.telephony.ims.feature.MmTelFeature
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settingslib.spa.testutils.toListWithTimeout
 import com.google.common.truth.Truth.assertThat
+import java.util.function.Consumer
+import kotlinx.coroutines.async
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doAnswer
 import org.mockito.kotlin.doReturn
 import org.mockito.kotlin.doThrow
+import org.mockito.kotlin.eq
 import org.mockito.kotlin.mock
-import org.mockito.kotlin.spy
 import org.mockito.kotlin.stub
 
 @RunWith(AndroidJUnit4::class)
 class ImsMmTelRepositoryTest {
-    private val mockTelephonyManager = mock<TelephonyManager> {
-        on { createForSubscriptionId(SUB_ID) } doReturn mock
-    }
+    private val context: Context = ApplicationProvider.getApplicationContext()
 
-    private val mockCarrierConfigManager = mock<CarrierConfigManager>()
-
-    private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
-        on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager
-        on { getSystemService(CarrierConfigManager::class.java) } doReturn mockCarrierConfigManager
-    }
+    private var stateCallback: ImsStateCallback? = null
 
     private val mockImsMmTelManager = mock<ImsMmTelManager> {
         on { isVoWiFiSettingEnabled } doReturn true
         on { getVoWiFiRoamingModeSetting() } doReturn ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED
         on { getVoWiFiModeSetting() } doReturn ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED
+        on { registerImsStateCallback(any(), any()) } doAnswer {
+            stateCallback = it.arguments[1] as ImsStateCallback
+            stateCallback?.onAvailable()
+        }
+        on { isSupported(eq(CAPABILITY), eq(TRANSPORT), any(), any()) } doAnswer {
+            @Suppress("UNCHECKED_CAST")
+            val consumer = it.arguments[3] as Consumer<Boolean>
+            consumer.accept(true)
+        }
     }
 
     private val repository = ImsMmTelRepositoryImpl(context, SUB_ID, mockImsMmTelManager)
@@ -60,42 +69,21 @@
             on { isVoWiFiSettingEnabled } doReturn false
         }
 
-        val wiFiCallingMode = repository.getWiFiCallingMode()
+        val wiFiCallingMode = repository.getWiFiCallingMode(false)
 
         assertThat(wiFiCallingMode).isEqualTo(ImsMmTelManager.WIFI_MODE_UNKNOWN)
     }
 
     @Test
-    fun getWiFiCallingMode_roamingAndNotUseWfcHomeModeForRoaming_returnRoamingSetting() {
-        mockTelephonyManager.stub {
-            on { isNetworkRoaming } doReturn true
-        }
-        mockUseWfcHomeModeForRoaming(false)
-
-        val wiFiCallingMode = repository.getWiFiCallingMode()
+    fun getWiFiCallingMode_useRoamingMode_returnRoamingSetting() {
+        val wiFiCallingMode = repository.getWiFiCallingMode(true)
 
         assertThat(wiFiCallingMode).isEqualTo(mockImsMmTelManager.getVoWiFiRoamingModeSetting())
     }
 
     @Test
-    fun getWiFiCallingMode_roamingAndUseWfcHomeModeForRoaming_returnHomeSetting() {
-        mockTelephonyManager.stub {
-            on { isNetworkRoaming } doReturn true
-        }
-        mockUseWfcHomeModeForRoaming(true)
-
-        val wiFiCallingMode = repository.getWiFiCallingMode()
-
-        assertThat(wiFiCallingMode).isEqualTo(mockImsMmTelManager.getVoWiFiModeSetting())
-    }
-
-    @Test
-    fun getWiFiCallingMode_notRoaming_returnHomeSetting() {
-        mockTelephonyManager.stub {
-            on { isNetworkRoaming } doReturn false
-        }
-
-        val wiFiCallingMode = repository.getWiFiCallingMode()
+    fun getWiFiCallingMode_notSseRoamingMode_returnHomeSetting() {
+        val wiFiCallingMode = repository.getWiFiCallingMode(false)
 
         assertThat(wiFiCallingMode).isEqualTo(mockImsMmTelManager.getVoWiFiModeSetting())
     }
@@ -106,22 +94,42 @@
             on { isVoWiFiSettingEnabled } doThrow IllegalArgumentException()
         }
 
-        val wiFiCallingMode = repository.getWiFiCallingMode()
+        val wiFiCallingMode = repository.getWiFiCallingMode(false)
 
         assertThat(wiFiCallingMode).isEqualTo(ImsMmTelManager.WIFI_MODE_UNKNOWN)
     }
 
-    private fun mockUseWfcHomeModeForRoaming(config: Boolean) {
-        mockCarrierConfigManager.stub {
-            on {
-                getConfigForSubId(SUB_ID, KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL)
-            } doReturn persistableBundleOf(
-                KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL to config,
-            )
+    @Test
+    fun imsReadyFlow_sendInitialValue() = runBlocking {
+        val flow = repository.imsReadyFlow()
+
+        val state = flow.first()
+
+        assertThat(state).isTrue()
+    }
+
+    @Test
+    fun imsReadyFlow_changed(): Unit = runBlocking {
+        val listDeferred = async {
+            repository.imsReadyFlow().toListWithTimeout()
         }
+        delay(100)
+
+        stateCallback?.onUnavailable(ImsStateCallback.REASON_IMS_SERVICE_NOT_READY)
+
+        assertThat(listDeferred.await().last()).isFalse()
+    }
+
+    @Test
+    fun isSupported() = runBlocking {
+        val isSupported = repository.isSupported(CAPABILITY, TRANSPORT)
+
+        assertThat(isSupported).isTrue()
     }
 
     private companion object {
         const val SUB_ID = 1
+        const val CAPABILITY = MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE
+        const val TRANSPORT = AccessNetworkConstants.TRANSPORT_TYPE_WLAN
     }
 }
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/wificalling/WifiCallingRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/wificalling/WifiCallingRepositoryTest.kt
new file mode 100644
index 0000000..1f3acc2
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/wificalling/WifiCallingRepositoryTest.kt
@@ -0,0 +1,114 @@
+/*
+ * 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 com.android.settings.network.telephony.wificalling
+
+import android.content.Context
+import android.telephony.CarrierConfigManager
+import android.telephony.CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL
+import android.telephony.TelephonyManager
+import android.telephony.ims.ImsMmTelManager
+import androidx.core.os.persistableBundleOf
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.network.telephony.ims.ImsMmTelRepository
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.stub
+
+@RunWith(AndroidJUnit4::class)
+class WifiCallingRepositoryTest {
+
+    private val mockTelephonyManager = mock<TelephonyManager> {
+        on { createForSubscriptionId(SUB_ID) } doReturn mock
+    }
+
+    private val mockCarrierConfigManager = mock<CarrierConfigManager>()
+
+    private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
+        on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager
+        on { getSystemService(CarrierConfigManager::class.java) } doReturn mockCarrierConfigManager
+    }
+
+    private val mockImsMmTelRepository = mock<ImsMmTelRepository> {
+        on { getWiFiCallingMode(any()) } doReturn ImsMmTelManager.WIFI_MODE_UNKNOWN
+    }
+
+    private val repository = WifiCallingRepository(context, SUB_ID, mockImsMmTelRepository)
+
+    @Test
+    fun getWiFiCallingMode_roamingAndNotUseWfcHomeModeForRoaming_returnRoamingSetting() {
+        mockTelephonyManager.stub {
+            on { isNetworkRoaming } doReturn true
+        }
+        mockUseWfcHomeModeForRoaming(false)
+        mockImsMmTelRepository.stub {
+            on { getWiFiCallingMode(true) } doReturn ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED
+        }
+
+        val wiFiCallingMode = repository.getWiFiCallingMode()
+
+        assertThat(wiFiCallingMode).isEqualTo(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+    }
+
+    @Test
+    fun getWiFiCallingMode_roamingAndUseWfcHomeModeForRoaming_returnHomeSetting() {
+        mockTelephonyManager.stub {
+            on { isNetworkRoaming } doReturn true
+        }
+        mockUseWfcHomeModeForRoaming(true)
+        mockImsMmTelRepository.stub {
+            on { getWiFiCallingMode(false) } doReturn ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED
+        }
+
+        val wiFiCallingMode = repository.getWiFiCallingMode()
+
+        assertThat(wiFiCallingMode).isEqualTo(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+    }
+
+    @Test
+    fun getWiFiCallingMode_notRoaming_returnHomeSetting() {
+        mockTelephonyManager.stub {
+            on { isNetworkRoaming } doReturn false
+        }
+        mockImsMmTelRepository.stub {
+            on { getWiFiCallingMode(false) } doReturn ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED
+        }
+
+        val wiFiCallingMode = repository.getWiFiCallingMode()
+
+        assertThat(wiFiCallingMode).isEqualTo(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+    }
+
+    private fun mockUseWfcHomeModeForRoaming(config: Boolean) {
+        mockCarrierConfigManager.stub {
+            on {
+                getConfigForSubId(SUB_ID, KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL)
+            } doReturn persistableBundleOf(
+                KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL to config,
+            )
+        }
+    }
+
+    private companion object {
+        const val SUB_ID = 1
+    }
+}
diff --git a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptionsTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptionsTest.kt
index 7103516..9e7ec9b 100644
--- a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptionsTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptionsTest.kt
@@ -19,11 +19,16 @@
 import android.app.AppOpsManager
 import android.app.KeyguardManager
 import android.app.admin.DevicePolicyManager
+import android.app.ecm.EnhancedConfirmationManager
 import android.content.Context
 import android.content.pm.ApplicationInfo
 import android.content.pm.PackageManager
 import android.content.pm.UserInfo
 import android.os.UserManager
+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 androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.test.assertIsNotDisplayed
@@ -61,6 +66,9 @@
     @get:Rule
     val composeTestRule = createComposeRule()
 
+    @get:Rule
+    val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
     private lateinit var mockSession: MockitoSession
 
     @Spy
@@ -82,6 +90,9 @@
     private lateinit var appOpsManager: AppOpsManager
 
     @Mock
+    private lateinit var enhancedConfirmationManager: EnhancedConfirmationManager
+
+    @Mock
     private lateinit var keyguardManager: KeyguardManager
 
     @Spy
@@ -103,6 +114,8 @@
         whenever(context.devicePolicyManager).thenReturn(devicePolicyManager)
         whenever(context.appOpsManager).thenReturn(appOpsManager)
         whenever(context.getSystemService(KeyguardManager::class.java)).thenReturn(keyguardManager)
+        whenever(context.getSystemService(EnhancedConfirmationManager::class.java))
+                .thenReturn(enhancedConfirmationManager)
         whenever(keyguardManager.isKeyguardSecure).thenReturn(false)
         whenever(Utils.isProfileOrDeviceOwner(userManager, devicePolicyManager, PACKAGE_NAME))
             .thenReturn(false)
@@ -158,7 +171,9 @@
     }
 
     @Test
-    fun shouldShowAccessRestrictedSettings() {
+    @RequiresFlagsDisabled(android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS,
+        android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED)
+    fun shouldShowAccessRestrictedSettings_appOp() {
         whenever(
             appOpsManager.noteOpNoThrow(
                 AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, UID, PACKAGE_NAME, null, null
@@ -186,6 +201,31 @@
         )
     }
 
+    @Test
+    @RequiresFlagsEnabled(android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS,
+        android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED)
+    fun shouldShowAccessRestrictedSettings() {
+        whenever(
+            enhancedConfirmationManager.isClearRestrictionAllowed(PACKAGE_NAME)
+        ).thenReturn(true)
+        val app = ApplicationInfo().apply {
+            packageName = PACKAGE_NAME
+            uid = UID
+        }
+
+        setContent(app)
+        composeTestRule.onRoot().performClick()
+
+        composeTestRule.waitUntilExists(
+            hasText(context.getString(R.string.app_restricted_settings_lockscreen_title))
+        )
+        composeTestRule
+            .onNodeWithText(context
+                .getString(R.string.app_restricted_settings_lockscreen_title))
+            .performClick()
+        verify(enhancedConfirmationManager).clearRestriction(PACKAGE_NAME)
+    }
+
     private fun setContent(app: ApplicationInfo) {
         composeTestRule.setContent {
             CompositionLocalProvider(LocalContext provides context) {
diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceControllerTest.kt
new file mode 100644
index 0000000..38f81fe
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceControllerTest.kt
@@ -0,0 +1,81 @@
+/*
+ * 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 com.android.settings.spa.app.specialaccess
+
+import android.content.Context
+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 androidx.preference.Preference
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import com.android.settings.flags.Flags
+import com.google.common.truth.Truth.assertThat
+
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doNothing
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.whenever
+
+@RunWith(AndroidJUnit4::class)
+class BackupTasksAppsPreferenceControllerTest {
+
+    @get:Rule
+    val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
+
+    private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
+        doNothing().whenever(mock).startActivity(any())
+    }
+
+    private val matchedPreference = Preference(context).apply { key = preferenceKey }
+
+    private val misMatchedPreference = Preference(context).apply { key = testPreferenceKey }
+
+    private val controller = BackupTasksAppsPreferenceController(context, preferenceKey)
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_PERFORM_BACKUP_TASKS_IN_SETTINGS)
+    fun getAvailabilityStatus_enableBackupTasksApps_returnAvailable() {
+        assertThat(controller.isAvailable).isTrue()
+    }
+
+    @Test
+    @RequiresFlagsDisabled(Flags.FLAG_ENABLE_PERFORM_BACKUP_TASKS_IN_SETTINGS)
+    fun getAvailableStatus_disableBackupTasksApps_returnConditionallyUnavailable() {
+        assertThat(controller.isAvailable).isFalse()
+    }
+
+    @Test
+    fun handlePreferenceTreeClick_keyMatched_returnTrue() {
+        assertThat(controller.handlePreferenceTreeClick(matchedPreference)).isTrue()
+    }
+
+    @Test
+    fun handlePreferenceTreeClick_keyMisMatched_returnFalse() {
+        assertThat(controller.handlePreferenceTreeClick(misMatchedPreference)).isFalse()
+    }
+
+    companion object {
+        private const val preferenceKey: String = "backup_tasks_apps"
+        private const val testPreferenceKey: String = "test_key"
+    }
+}
\ No newline at end of file
diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsTest.kt
new file mode 100644
index 0000000..d68f051
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsTest.kt
@@ -0,0 +1,44 @@
+/*
+ * 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 com.android.settings.spa.app.specialaccess
+
+import android.Manifest
+import android.app.AppOpsManager
+import android.content.Context
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.google.common.truth.Truth.assertThat
+import com.android.settings.R
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class BackupTasksAppsTest {
+    private val context: Context = ApplicationProvider.getApplicationContext()
+
+    private val listModel = BackupTasksAppsListModel(context)
+
+    @Test
+    fun modelResourceIdAndProperties() {
+        assertThat(listModel.pageTitleResId).isEqualTo(R.string.run_backup_tasks_title)
+        assertThat(listModel.switchTitleResId).isEqualTo(R.string.run_backup_tasks_switch_title)
+        assertThat(listModel.footerResId).isEqualTo(R.string.run_backup_tasks_footer_title)
+        assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_RUN_BACKUP_JOBS)
+        assertThat(listModel.permission).isEqualTo(Manifest.permission.RUN_BACKUP_JOBS)
+        assertThat(listModel.setModeByUid).isTrue()
+    }
+}
\ No newline at end of file
diff --git a/tests/spa_unit/src/com/android/settings/testutils/FakeFeatureFactory.kt b/tests/spa_unit/src/com/android/settings/testutils/FakeFeatureFactory.kt
index 4048c24..606db8e 100644
--- a/tests/spa_unit/src/com/android/settings/testutils/FakeFeatureFactory.kt
+++ b/tests/spa_unit/src/com/android/settings/testutils/FakeFeatureFactory.kt
@@ -25,6 +25,7 @@
 import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider
 import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider
 import com.android.settings.bluetooth.BluetoothFeatureProvider
+import com.android.settings.connecteddevice.audiosharing.AudioSharingFeatureProvider
 import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider
 import com.android.settings.connecteddevice.stylus.StylusFeatureProvider
 import com.android.settings.dashboard.DashboardFeatureProvider
@@ -149,4 +150,6 @@
         get() = TODO("Not yet implemented")
     override val displayFeatureProvider: DisplayFeatureProvider
         get() = TODO("Not yet implemented")
+    override val audioSharingFeatureProvider: AudioSharingFeatureProvider
+        get() = TODO("Not yet implemented")
 }
diff --git a/tests/spa_unit/src/com/android/settings/wifi/details2/WifiPrivacyPageProviderTest.kt b/tests/spa_unit/src/com/android/settings/wifi/details2/WifiPrivacyPageProviderTest.kt
new file mode 100644
index 0000000..5c9a1a4
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/wifi/details2/WifiPrivacyPageProviderTest.kt
@@ -0,0 +1,179 @@
+/*
+ * 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 com.android.settings.wifi.details2
+
+import android.content.Context
+import android.net.wifi.WifiConfiguration
+import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.assertIsNotEnabled
+import androidx.compose.ui.test.assertIsOff
+import androidx.compose.ui.test.assertIsOn
+import androidx.compose.ui.test.assertIsSelectable
+import androidx.compose.ui.test.assertIsSelected
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.onNodeWithText
+import androidx.compose.ui.test.onRoot
+import androidx.compose.ui.test.performClick
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
+import com.android.wifitrackerlib.WifiEntry
+import com.google.common.truth.Truth
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+
+@RunWith(AndroidJUnit4::class)
+class WifiPrivacyPageProviderTest {
+    @get:Rule
+    val composeTestRule = createComposeRule()
+
+    private val context: Context = ApplicationProvider.getApplicationContext()
+    private var mockWifiConfiguration = mock<WifiConfiguration>() {
+        on { isSendDhcpHostnameEnabled } doReturn true
+    }
+    private var mockWifiEntry = mock<WifiEntry>() {
+        on { canSetPrivacy() } doReturn true
+        on { privacy } doReturn 0
+        on { wifiConfiguration } doReturn mockWifiConfiguration
+    }
+
+    @Test
+    fun apnEditPageProvider_name() {
+        Truth.assertThat(WifiPrivacyPageProvider.name).isEqualTo("WifiPrivacy")
+    }
+
+    @Test
+    fun title_displayed() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        composeTestRule.onNodeWithText(
+            context.getString(R.string.wifi_privacy_settings)
+        ).assertIsDisplayed()
+    }
+
+    @Test
+    fun category_mac_title_displayed() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        composeTestRule.onNodeWithText(
+            context.getString(R.string.wifi_privacy_mac_settings)
+        ).assertIsDisplayed()
+    }
+
+    @Test
+    fun category_mac_list_displayed() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        val wifiPrivacyEntries = context.resources.getStringArray(R.array.wifi_privacy_entries)
+        for (entry in wifiPrivacyEntries) {
+            composeTestRule.onNodeWithText(
+                entry
+            ).assertIsDisplayed()
+        }
+    }
+
+    @Test
+    fun category_mac_list_selectable() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        val wifiPrivacyEntries = context.resources.getStringArray(R.array.wifi_privacy_entries)
+        for (entry in wifiPrivacyEntries) {
+            composeTestRule.onNodeWithText(
+                entry
+            ).assertIsSelectable()
+        }
+    }
+
+    @Test
+    fun category_mac_list_default_selected() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        val wifiPrivacyEntries = context.resources.getStringArray(R.array.wifi_privacy_entries)
+        val wifiPrivacyValues = context.resources.getStringArray(R.array.wifi_privacy_values)
+        composeTestRule.onNodeWithText(
+            wifiPrivacyEntries[wifiPrivacyValues.indexOf("0")]
+        ).assertIsSelected()
+    }
+
+    @Test
+    fun category_mac_list_not_enabled() {
+        mockWifiEntry.stub {
+            on { canSetPrivacy() } doReturn false
+        }
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        val wifiPrivacyEntries = context.resources.getStringArray(R.array.wifi_privacy_entries)
+        for (entry in wifiPrivacyEntries) {
+            composeTestRule.onNodeWithText(entry).assertIsNotEnabled()
+        }
+    }
+
+    @Test
+    fun category_send_device_name_title_displayed() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        composeTestRule.onNodeWithText(
+            context.getString(R.string.wifi_privacy_device_name_settings)
+        ).assertIsDisplayed()
+    }
+
+    @Test
+    fun toggle_send_device_name_title_displayed() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        composeTestRule.onNodeWithText(
+            context.getString(R.string.wifi_privacy_send_device_name_toggle_title)
+        ).assertIsDisplayed()
+    }
+
+    @Test
+    fun send_device_name_turnOn() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+        composeTestRule.onNodeWithText(
+            context.getString(R.string.wifi_privacy_send_device_name_toggle_title)
+        ).assertIsOn()
+    }
+
+    @Test
+    fun onClick_turnOff() {
+        composeTestRule.setContent {
+            WifiPrivacyPage(mockWifiEntry)
+        }
+
+        composeTestRule.onNodeWithText(
+            context.getString(R.string.wifi_privacy_send_device_name_toggle_title)
+        ).performClick()
+
+        composeTestRule.onNodeWithText(
+            context.getString(R.string.wifi_privacy_send_device_name_toggle_title)
+        ).assertIsOff()
+    }
+}
\ No newline at end of file
diff --git a/tests/spa_unit/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceControllerTest.kt
new file mode 100644
index 0000000..98997e4
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceControllerTest.kt
@@ -0,0 +1,96 @@
+/*
+ * 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 com.android.settings.wifi.details2
+
+import android.content.Context
+import android.content.Intent
+import android.net.wifi.WifiManager
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.onNodeWithText
+import androidx.compose.ui.test.performClick
+import androidx.core.os.bundleOf
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
+import com.android.settingslib.spa.framework.util.KEY_DESTINATION
+import com.google.common.truth.Truth
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.doNothing
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+
+@RunWith(AndroidJUnit4::class)
+class WifiPrivacyPreferenceControllerTest {
+    @get:Rule
+    val composeTestRule = createComposeRule()
+
+    private val mockWifiManager = mock<WifiManager> {
+        on { isConnectedMacRandomizationSupported } doReturn true
+    }
+
+    private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
+        on { getSystemService(WifiManager::class.java) } doReturn mockWifiManager
+        doNothing().whenever(mock).startActivity(any())
+    }
+
+    private val controller = WifiPrivacyPreferenceController(context, TEST_KEY)
+
+    @Test
+    fun title_isDisplayed() {
+        composeTestRule.setContent {
+            CompositionLocalProvider(LocalContext provides context) {
+                controller.Content()
+            }
+        }
+
+        composeTestRule.onNodeWithText(context.getString(R.string.wifi_privacy_settings))
+            .assertIsDisplayed()
+    }
+
+    @Test
+    fun onClick_startWifiPrivacyPage() {
+        composeTestRule.setContent {
+            CompositionLocalProvider(LocalContext provides context) {
+                controller.setWifiEntryKey("")
+                controller.Content()
+            }
+        }
+
+        composeTestRule.onNodeWithText(context.getString(R.string.wifi_privacy_settings))
+            .performClick()
+
+        val intent = argumentCaptor<Intent> {
+            verify(context).startActivity(capture())
+        }.firstValue
+        Truth.assertThat(intent.getStringExtra(KEY_DESTINATION))
+            .isEqualTo(WifiPrivacyPageProvider.getRoute(""))
+    }
+
+    private companion object {
+        const val TEST_KEY = "test_key"
+    }
+}
\ No newline at end of file
diff --git a/tests/uitests/src/com/android/settings/ui/privatespace/PrivateSpaceAuthenticationActivityTest.kt b/tests/uitests/src/com/android/settings/ui/privatespace/PrivateSpaceAuthenticationActivityTest.kt
index 8751471..8eadd9d 100644
--- a/tests/uitests/src/com/android/settings/ui/privatespace/PrivateSpaceAuthenticationActivityTest.kt
+++ b/tests/uitests/src/com/android/settings/ui/privatespace/PrivateSpaceAuthenticationActivityTest.kt
@@ -18,9 +18,11 @@
 
 
 import android.os.Flags
+import android.platform.test.annotations.RequiresFlagsDisabled
 import android.platform.test.annotations.RequiresFlagsEnabled
 import android.platform.test.flag.junit.DeviceFlagsValueProvider
 import android.provider.Settings
+import android.util.Log
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.test.uiautomator.By
@@ -77,15 +79,18 @@
         Thread.sleep(1000)
         device.assertHasTexts(listOf(SET_LOCK_BUTTON,CANCEL_TEXT))
         device.clickObject(By.text(SET_LOCK_BUTTON))
-        device.assertHasTexts(listOf(LOCK_SCREEN_TITLE))
+        Thread.sleep(1000)
+        device.assertHasTexts(listOf(PATTERN_TEXT, PIN_TEXT, PASSWORD_TEXT))
     }
 
     private companion object {
         // Items we really want to always show
-        val PRIVATE_SPACE_SETTING = "Private Space"
+        val PRIVATE_SPACE_SETTING = "Private space"
         const val SET_LOCK_BUTTON = "Set screen lock"
         val CANCEL_TEXT = "Cancel"
         val DIALOG_TITLE = "Set a screen lock"
-        val LOCK_SCREEN_TITLE = "Choose screen lock"
+        val PATTERN_TEXT = "Pattern"
+        val PIN_TEXT = "PIN"
+        val PASSWORD_TEXT = "Password"
     }
 }
diff --git a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceControllerTest.java
index fa5af6d..eb23685 100644
--- a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceControllerTest.java
@@ -36,6 +36,9 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.platform.test.annotations.EnableFlags;
+import android.platform.test.annotations.RequiresFlagsDisabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
 import android.platform.test.flag.junit.SetFlagsRule;
 
 import androidx.test.core.app.ApplicationProvider;
@@ -45,6 +48,7 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.RestrictedSwitchPreference;
 
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -58,6 +62,8 @@
     @Rule
     public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(
             SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT);
+    @Rule
+    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
 
     private Context mContext;
     private FakeFeatureFactory mFeatureFactory;
@@ -122,6 +128,7 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS)
     public void updateState_checked() {
         when(mAppOpsManager.noteOpNoThrow(anyInt(), anyInt(), anyString())).thenReturn(
                 AppOpsManager.MODE_ALLOWED);
@@ -136,19 +143,26 @@
     }
 
     @Test
+    @RequiresFlagsDisabled(android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS)
     public void restrictedSettings_appOpsDisabled() {
-        when(mAppOpsManager.noteOpNoThrow(anyInt(), anyInt(), anyString())).thenReturn(
-                AppOpsManager.MODE_ERRORED);
+        Assert.assertFalse(android.security.Flags.extendEcmToAllSettings());
+        when(mAppOpsManager.noteOpNoThrow(anyInt(), anyInt(), anyString()))
+                .thenReturn(AppOpsManager.MODE_ERRORED);
+        doReturn(mAppOpsManager).when(mContext).getSystemService(Context.APP_OPS_SERVICE);
         when(mNm.isNotificationListenerAccessGranted(mCn)).thenReturn(false);
         RestrictedSwitchPreference pref = new RestrictedSwitchPreference(
                 mContext);
         pref.setAppOps(mAppOpsManager);
+        mController.setSettingIdentifier(AppOpsManager.OPSTR_ACCESS_NOTIFICATIONS);
 
         mController.updateState(pref);
+
+        verify(mAppOpsManager).noteOpNoThrow(anyInt(), anyInt(), anyString());
         assertThat(pref.isEnabled()).isFalse();
     }
 
     @Test
+    @RequiresFlagsDisabled(android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS)
     public void restrictedSettings_serviceAlreadyEnabled() {
         when(mAppOpsManager.noteOpNoThrow(anyInt(), anyInt(), anyString())).thenReturn(
                 AppOpsManager.MODE_ERRORED);
diff --git a/tests/unit/src/com/android/settings/biometrics/face/FaceUpdaterTest.java b/tests/unit/src/com/android/settings/biometrics/face/FaceUpdaterTest.java
index 9190d0a..1701eaa 100644
--- a/tests/unit/src/com/android/settings/biometrics/face/FaceUpdaterTest.java
+++ b/tests/unit/src/com/android/settings/biometrics/face/FaceUpdaterTest.java
@@ -25,6 +25,7 @@
 import static org.mockito.Mockito.verify;
 
 import android.content.Context;
+import android.content.Intent;
 import android.hardware.face.Face;
 import android.hardware.face.FaceEnrollCell;
 import android.hardware.face.FaceEnrollStages;
@@ -93,7 +94,7 @@
         ArgumentCaptor<FaceManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FaceManager.EnrollmentCallback.class);
         mFaceUpdater.enroll(USER_ID, HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, mEnrollmentCallback,
-                DISABLED_FEATURES);
+                DISABLED_FEATURES, new Intent());
         verify(mFaceManager).enroll(
                 eq(USER_ID),
                 same(HARDWARE_AUTH_TOKEN),
@@ -101,7 +102,8 @@
                 callbackCaptor.capture(),
                 same(DISABLED_FEATURES),
                 same(null),
-                eq(false));
+                eq(false),
+                any());
         FaceManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentError(ERR_MSG_ID, ERR_STRING);
@@ -121,7 +123,7 @@
         ArgumentCaptor<FaceManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FaceManager.EnrollmentCallback.class);
         mFaceUpdater.enroll(USER_ID, HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, mEnrollmentCallback,
-                DISABLED_FEATURES);
+                DISABLED_FEATURES, new Intent());
         verify(mFaceManager).enroll(
                 eq(USER_ID),
                 same(HARDWARE_AUTH_TOKEN),
@@ -129,7 +131,8 @@
                 callbackCaptor.capture(),
                 same(DISABLED_FEATURES),
                 same(null),
-                eq(false));
+                eq(false),
+                any());
         FaceManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentProgress(/* remaining= */ 0);
@@ -142,7 +145,7 @@
         ArgumentCaptor<FaceManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FaceManager.EnrollmentCallback.class);
         mFaceUpdater.enroll(USER_ID, HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, mEnrollmentCallback,
-                DISABLED_FEATURES);
+                DISABLED_FEATURES, new Intent());
         verify(mFaceManager).enroll(
                 eq(USER_ID),
                 same(HARDWARE_AUTH_TOKEN),
@@ -150,7 +153,8 @@
                 callbackCaptor.capture(),
                 same(DISABLED_FEATURES),
                 same(null),
-                eq(false));
+                eq(false),
+                any());
         FaceManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentProgress(/* remaining= */ 1);
@@ -163,7 +167,7 @@
         ArgumentCaptor<FaceManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FaceManager.EnrollmentCallback.class);
         mFaceUpdater.enroll(USER_ID, HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, mEnrollmentCallback,
-                DISABLED_FEATURES, PREVIEW_SURFACE, DEBUG_CONSENT);
+                DISABLED_FEATURES, PREVIEW_SURFACE, DEBUG_CONSENT, new Intent());
         verify(mFaceManager).enroll(
                 eq(USER_ID),
                 same(HARDWARE_AUTH_TOKEN),
@@ -171,7 +175,8 @@
                 callbackCaptor.capture(),
                 same(DISABLED_FEATURES),
                 same(PREVIEW_SURFACE),
-                eq(DEBUG_CONSENT));
+                eq(DEBUG_CONSENT),
+                any());
         FaceManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentError(ERR_MSG_ID, ERR_STRING);
@@ -191,7 +196,7 @@
         ArgumentCaptor<FaceManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FaceManager.EnrollmentCallback.class);
         mFaceUpdater.enroll(USER_ID, HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, mEnrollmentCallback,
-                DISABLED_FEATURES, PREVIEW_SURFACE, DEBUG_CONSENT);
+                DISABLED_FEATURES, PREVIEW_SURFACE, DEBUG_CONSENT, new Intent());
         verify(mFaceManager).enroll(
                 eq(USER_ID),
                 same(HARDWARE_AUTH_TOKEN),
@@ -199,7 +204,8 @@
                 callbackCaptor.capture(),
                 same(DISABLED_FEATURES),
                 same(PREVIEW_SURFACE),
-                eq(DEBUG_CONSENT));
+                eq(DEBUG_CONSENT),
+                any());
         FaceManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentProgress(/* remaining= */ 0);
@@ -212,7 +218,7 @@
         ArgumentCaptor<FaceManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FaceManager.EnrollmentCallback.class);
         mFaceUpdater.enroll(USER_ID, HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, mEnrollmentCallback,
-                DISABLED_FEATURES, PREVIEW_SURFACE, DEBUG_CONSENT);
+                DISABLED_FEATURES, PREVIEW_SURFACE, DEBUG_CONSENT, new Intent());
         verify(mFaceManager).enroll(
                 eq(USER_ID),
                 same(HARDWARE_AUTH_TOKEN),
@@ -220,7 +226,8 @@
                 callbackCaptor.capture(),
                 same(DISABLED_FEATURES),
                 same(PREVIEW_SURFACE),
-                eq(DEBUG_CONSENT));
+                eq(DEBUG_CONSENT),
+                any());
         FaceManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentProgress(/* remaining= */ 1);
diff --git a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintUpdaterTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintUpdaterTest.java
index 62435b4..6218efb 100644
--- a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintUpdaterTest.java
+++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintUpdaterTest.java
@@ -24,6 +24,7 @@
 import static org.mockito.Mockito.verify;
 
 import android.content.Context;
+import android.content.Intent;
 import android.hardware.fingerprint.Fingerprint;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.CancellationSignal;
@@ -78,13 +79,14 @@
         ArgumentCaptor<FingerprintManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FingerprintManager.EnrollmentCallback.class);
         mFingerprintUpdater.enroll(HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, USER_ID,
-                mEnrollmentCallback, ENROLL_REASON);
+                mEnrollmentCallback, ENROLL_REASON, new Intent());
         verify(mFingerprintManager).enroll(
                 same(HARDWARE_AUTH_TOKEN),
                 same(CANCELLATION_SIGNAL),
                 eq(USER_ID),
                 callbackCaptor.capture(),
-                eq(ENROLL_REASON));
+                eq(ENROLL_REASON),
+                any());
         FingerprintManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentError(ERR_MSG_ID, ERR_STRING);
@@ -101,13 +103,14 @@
         ArgumentCaptor<FingerprintManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FingerprintManager.EnrollmentCallback.class);
         mFingerprintUpdater.enroll(HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, USER_ID,
-                mEnrollmentCallback, ENROLL_REASON);
+                mEnrollmentCallback, ENROLL_REASON, new Intent());
         verify(mFingerprintManager).enroll(
                 same(HARDWARE_AUTH_TOKEN),
                 same(CANCELLATION_SIGNAL),
                 eq(USER_ID),
                 callbackCaptor.capture(),
-                eq(ENROLL_REASON));
+                eq(ENROLL_REASON),
+                any());
         FingerprintManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentProgress(/* remaining= */ 0);
@@ -120,13 +123,14 @@
         ArgumentCaptor<FingerprintManager.EnrollmentCallback> callbackCaptor =
                 ArgumentCaptor.forClass(FingerprintManager.EnrollmentCallback.class);
         mFingerprintUpdater.enroll(HARDWARE_AUTH_TOKEN, CANCELLATION_SIGNAL, USER_ID,
-                mEnrollmentCallback, ENROLL_REASON);
+                mEnrollmentCallback, ENROLL_REASON, new Intent());
         verify(mFingerprintManager).enroll(
                 same(HARDWARE_AUTH_TOKEN),
                 same(CANCELLATION_SIGNAL),
                 eq(USER_ID),
                 callbackCaptor.capture(),
-                eq(ENROLL_REASON));
+                eq(ENROLL_REASON),
+                any());
         FingerprintManager.EnrollmentCallback callback = callbackCaptor.getValue();
 
         callback.onEnrollmentProgress(/* remaining= */ 1);
diff --git a/tests/unit/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImplTest.kt b/tests/unit/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImplTest.kt
index 794cfec..f7256b9 100644
--- a/tests/unit/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImplTest.kt
+++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImplTest.kt
@@ -44,16 +44,24 @@
 
 @RunWith(AndroidJUnit4::class)
 class SfpsEnrollmentFeatureImplTest {
+    private val STAGE_0 = 0
+    private val STAGE_1 = 1
+    private val STAGE_2 = 2
+    private val STAGE_3 = 3
+    private val STAGE_4 = 4
+
+    private val THRESHOLD_0 = 0f
+    private val THRESHOLD_1 = .36f
+    private val THRESHOLD_2 = .52f
+    private val THRESHOLD_3 = .76f
+    private val THRESHOLD_4 = 1f
+
     @get:Rule
     val mockito: MockitoRule = MockitoJUnit.rule()
 
     @Spy
     private val context: Context = ApplicationProvider.getApplicationContext()
 
-    private val settingsPackageName = "com.android.settings"
-
-    private lateinit var settingsContext: Context
-
     @Mock
     private lateinit var mockFingerprintManager: FingerprintManager
 
@@ -61,31 +69,34 @@
 
     @Before
     fun setUp() {
-        assertThat(mSfpsEnrollmentFeatureImpl).isInstanceOf(SfpsEnrollmentFeatureImpl::class.java)
         whenever(context.getSystemService(FingerprintManager::class.java))
             .thenReturn(mockFingerprintManager)
-        doReturn(0f).`when`(mockFingerprintManager).getEnrollStageThreshold(0)
-        doReturn(0.36f).`when`(mockFingerprintManager).getEnrollStageThreshold(1)
-        doReturn(0.52f).`when`(mockFingerprintManager).getEnrollStageThreshold(2)
-        doReturn(0.76f).`when`(mockFingerprintManager).getEnrollStageThreshold(3)
-        doReturn(1f).`when`(mockFingerprintManager).getEnrollStageThreshold(4)
-        settingsContext = context.createPackageContext(settingsPackageName, 0)
+        doReturn(THRESHOLD_0).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_0)
+        doReturn(THRESHOLD_1).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_1)
+        doReturn(THRESHOLD_2).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_2)
+        doReturn(THRESHOLD_3).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_3)
+        doReturn(THRESHOLD_4).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_4)
     }
 
     @Test
     fun testGetEnrollStageThreshold() {
-        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 0)).isEqualTo(0f)
-        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 1)).isEqualTo(0.36f)
-        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 2)).isEqualTo(0.52f)
-        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 3)).isEqualTo(0.76f)
-        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 4)).isEqualTo(1f)
+        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_0))
+            .isEqualTo(THRESHOLD_0)
+        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_1))
+            .isEqualTo(THRESHOLD_1)
+        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_2))
+            .isEqualTo(THRESHOLD_2)
+        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_3))
+            .isEqualTo(THRESHOLD_3)
+        assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_4))
+            .isEqualTo(THRESHOLD_4)
     }
 
     @Test
     fun testGetHelpAnimator() {
         val mockView: View = mock(View::class.java)
         val animator: Animator = mSfpsEnrollmentFeatureImpl.getHelpAnimator(mockView)
-        assertThat(animator.duration).isEqualTo(550)
+        assertThat(animator.duration).isEqualTo(SfpsEnrollmentFeatureImpl.HELP_ANIMATOR_DURATION)
     }
 
     @Test
@@ -115,42 +126,27 @@
         assertThat(
             mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_NO_ANIMATION)
         ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "security_settings_fingerprint_enroll_repeat_title",
-                type,
-                settingsPackageName)
+            getSettingsResourcesId(type, "security_settings_fingerprint_enroll_repeat_title")
         )
         assertThat(
             mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_CENTER)
         ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "security_settings_sfps_enroll_finger_center_title",
-                type,
-                settingsPackageName)
+            getSettingsResourcesId(type, "security_settings_sfps_enroll_finger_center_title")
         )
         assertThat(
             mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_FINGERTIP)
         ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "security_settings_sfps_enroll_fingertip_title",
-                type,
-                settingsPackageName)
+            getSettingsResourcesId(type, "security_settings_sfps_enroll_fingertip_title")
         )
         assertThat(
             mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_LEFT_EDGE)
         ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "security_settings_sfps_enroll_left_edge_title",
-                type,
-                settingsPackageName)
+            getSettingsResourcesId(type, "security_settings_sfps_enroll_left_edge_title")
         )
         assertThat(
             mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_RIGHT_EDGE)
         ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "security_settings_sfps_enroll_right_edge_title",
-                type,
-                settingsPackageName)
+            getSettingsResourcesId(type, "security_settings_sfps_enroll_right_edge_title")
         )
     }
 
@@ -159,43 +155,22 @@
         val type = "raw"
         assertThat(
             mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_NO_ANIMATION)
-        ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "sfps_lottie_no_animation",
-                type,
-                settingsPackageName)
-        )
+        ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_no_animation"))
         assertThat(
             mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_CENTER)
-        ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "sfps_lottie_pad_center",
-                type,
-                settingsPackageName)
-        )
+        ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_pad_center"))
         assertThat(
             mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_FINGERTIP)
-        ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "sfps_lottie_tip",
-                type,
-                settingsPackageName)
-        )
+        ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_tip"))
         assertThat(
             mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_LEFT_EDGE)
-        ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "sfps_lottie_left_edge",
-                type,
-                settingsPackageName)
-        )
+        ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_left_edge"))
         assertThat(
             mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_RIGHT_EDGE)
-        ).isEqualTo(
-            settingsContext.resources.getIdentifier(
-                "sfps_lottie_right_edge",
-                type,
-                settingsPackageName)
-        )
+        ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_right_edge"))
+    }
+
+    private fun getSettingsResourcesId(type: String, name: String) : Int {
+        return context.resources.getIdentifier(name, type, context.packageName)
     }
 }
\ No newline at end of file
diff --git a/tests/unit/src/com/android/settings/biometrics2/ui/viewmodel/FingerprintEnrollProgressViewModelTest.java b/tests/unit/src/com/android/settings/biometrics2/ui/viewmodel/FingerprintEnrollProgressViewModelTest.java
index 418db04..2c7afa6 100644
--- a/tests/unit/src/com/android/settings/biometrics2/ui/viewmodel/FingerprintEnrollProgressViewModelTest.java
+++ b/tests/unit/src/com/android/settings/biometrics2/ui/viewmodel/FingerprintEnrollProgressViewModelTest.java
@@ -98,7 +98,7 @@
             mCallbackWrapper.mValue = invocation.getArgument(3);
             return null;
         }).when(mFingerprintUpdater).enroll(any(byte[].class), any(CancellationSignal.class),
-                eq(TEST_USER_ID), any(EnrollmentCallback.class), anyInt());
+                eq(TEST_USER_ID), any(EnrollmentCallback.class), anyInt(), any());
     }
 
     @Test
@@ -112,7 +112,7 @@
 
         assertThat(ret).isNotNull();
         verify(mFingerprintUpdater, only()).enroll(eq(token), any(CancellationSignal.class),
-                eq(TEST_USER_ID), any(EnrollmentCallback.class), eq(enrollReason));
+                eq(TEST_USER_ID), any(EnrollmentCallback.class), eq(enrollReason), any());
         assertThat(mCallbackWrapper.mValue instanceof MessageDisplayController).isFalse();
     }
 
@@ -127,7 +127,7 @@
 
         assertThat(ret).isNotNull();
         verify(mFingerprintUpdater, only()).enroll(eq(token), any(CancellationSignal.class),
-                eq(TEST_USER_ID), any(EnrollmentCallback.class), eq(enrollReason));
+                eq(TEST_USER_ID), any(EnrollmentCallback.class), eq(enrollReason), any());
         assertThat(mCallbackWrapper.mValue instanceof MessageDisplayController).isFalse();
     }
 
@@ -146,7 +146,7 @@
 
         assertThat(ret).isNotNull();
         verify(mFingerprintUpdater, only()).enroll(eq(token), any(CancellationSignal.class),
-                eq(TEST_USER_ID), any(MessageDisplayController.class), eq(enrollReason));
+                eq(TEST_USER_ID), any(MessageDisplayController.class), eq(enrollReason), any());
         assertThat(mCallbackWrapper.mValue).isNotNull();
 
         assertThat(mCallbackWrapper.mValue instanceof MessageDisplayController).isTrue();
@@ -158,7 +158,7 @@
 
         // Shall not use the same MessageDisplayController
         verify(mFingerprintUpdater, times(2)).enroll(eq(token), any(CancellationSignal.class),
-                eq(TEST_USER_ID), any(MessageDisplayController.class), eq(enrollReason));
+                eq(TEST_USER_ID), any(MessageDisplayController.class), eq(enrollReason), any());
         assertThat(mCallbackWrapper.mValue).isNotNull();
         assertThat(callback1).isNotEqualTo(mCallbackWrapper.mValue);
     }
@@ -170,7 +170,8 @@
 
         assertThat(ret).isNull();
         verify(mFingerprintUpdater, never()).enroll(any(byte[].class),
-                any(CancellationSignal.class), anyInt(), any(EnrollmentCallback.class), anyInt());
+                any(CancellationSignal.class), anyInt(), any(EnrollmentCallback.class), anyInt(),
+                any());
     }
 
     @Test
diff --git a/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt b/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt
index c284a6f..2b4bff7 100644
--- a/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt
+++ b/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt
@@ -19,6 +19,7 @@
 import android.content.Context
 import android.content.Intent
 import android.hardware.fingerprint.Fingerprint
+import android.hardware.fingerprint.FingerprintEnrollOptions
 import android.hardware.fingerprint.FingerprintManager
 import android.hardware.fingerprint.FingerprintManager.CryptoObject
 import android.hardware.fingerprint.FingerprintManager.FINGERPRINT_ERROR_LOCKOUT_PERMANENT
@@ -99,6 +100,7 @@
         gateKeeperPasswordProvider,
         pressToAuthInteractor,
         Default,
+        Intent(),
       )
   }
 
@@ -312,7 +314,8 @@
           any(CancellationSignal::class.java),
           anyInt(),
           capture(enrollCallback),
-          eq(FingerprintManager.ENROLL_FIND_SENSOR)
+          eq(FingerprintManager.ENROLL_FIND_SENSOR),
+          any(FingerprintEnrollOptions::class.java),
         )
       enrollCallback.value.onEnrollmentProgress(1)
       runCurrent()
@@ -336,7 +339,8 @@
           any(CancellationSignal::class.java),
           anyInt(),
           capture(enrollCallback),
-          eq(FingerprintManager.ENROLL_FIND_SENSOR)
+          eq(FingerprintManager.ENROLL_FIND_SENSOR),
+          any(FingerprintEnrollOptions::class.java),
         )
       enrollCallback.value.onEnrollmentHelp(-1, "help")
       runCurrent()
@@ -360,7 +364,8 @@
           any(CancellationSignal::class.java),
           anyInt(),
           capture(enrollCallback),
-          eq(FingerprintManager.ENROLL_FIND_SENSOR)
+          eq(FingerprintManager.ENROLL_FIND_SENSOR),
+          any(FingerprintEnrollOptions::class.java),
         )
       enrollCallback.value.onEnrollmentError(-1, "error")
       runCurrent()
diff --git a/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt b/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt
index f202c4f..829716e 100644
--- a/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt
+++ b/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt
@@ -40,6 +40,7 @@
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
@@ -119,21 +120,18 @@
       }
     foldStateInteractor =
       object : FoldStateInteractor {
-        override val isFolded: Flow<Boolean> = foldState
+        override val isFolded: Flow<Boolean> = foldState.asStateFlow()
+
         override fun onConfigurationChange(newConfig: Configuration) {
-          TODO("Not yet implemented")
+          foldState.update { false }
         }
       }
+
     orientationInteractor =
-      object: OrientationInteractor {
-        override val orientation: Flow<Int>
-          get() = TODO("Not yet implemented")
+      object : OrientationInteractor {
+        override val orientation: Flow<Int> = flowOf(Configuration.ORIENTATION_LANDSCAPE)
         override val rotation: Flow<Int> = flowOf(Surface.ROTATION_0)
-
-        override fun getRotationFromDefault(rotation: Int): Int {
-          TODO("Not yet implemented")
-        }
-
+        override fun getRotationFromDefault(rotation: Int): Int = rotation
       }
     underTest =
       FingerprintEnrollFindSensorViewModel.FingerprintEnrollFindSensorViewModelFactory(
diff --git a/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt
new file mode 100644
index 0000000..696e4fa
--- /dev/null
+++ b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt
@@ -0,0 +1,111 @@
+/*
+ * 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 com.android.settings.fingerprint2.ui.enrollment.viewmodel
+
+import androidx.arch.core.executor.testing.InstantTaskExecutorRule
+import com.android.settings.biometrics.fingerprint2.lib.model.Default
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollConfirmationViewModel
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintFlowViewModel
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep
+import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationViewModel
+import com.android.settings.testutils2.FakeFingerprintManagerInteractor
+import com.android.systemui.biometrics.shared.model.FingerprintSensor
+import com.android.systemui.biometrics.shared.model.FingerprintSensorType
+import com.android.systemui.biometrics.shared.model.SensorStrength
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.advanceUntilIdle
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoJUnitRunner
+
+@RunWith(MockitoJUnitRunner::class)
+class FingerprintEnrollConfirmationViewModelTest {
+  @JvmField @Rule var rule = MockitoJUnit.rule()
+
+  @get:Rule val instantTaskRule = InstantTaskExecutorRule()
+  private var backgroundDispatcher = StandardTestDispatcher()
+  private var testScope = TestScope(backgroundDispatcher)
+  val fingerprintFlowViewModel = FingerprintFlowViewModel(Default)
+  val fakeFingerprintManagerInteractor = FakeFingerprintManagerInteractor()
+  lateinit var navigationViewModel: FingerprintNavigationViewModel
+  lateinit var underTest: FingerprintEnrollConfirmationViewModel
+
+  @Before
+  fun setup() {
+    navigationViewModel =
+      FingerprintNavigationViewModel(
+        FingerprintNavigationStep.Confirmation,
+        false,
+        fingerprintFlowViewModel,
+        fakeFingerprintManagerInteractor,
+      )
+    underTest =
+      FingerprintEnrollConfirmationViewModel(navigationViewModel, fakeFingerprintManagerInteractor)
+  }
+
+  @Test
+  fun testCanEnrollFingerprints() =
+    testScope.runTest {
+      fakeFingerprintManagerInteractor.sensorProp =
+        FingerprintSensor(0 /* sensorId */, SensorStrength.STRONG, 5, FingerprintSensorType.REAR)
+      fakeFingerprintManagerInteractor.enrolledFingerprintsInternal = mutableListOf()
+      fakeFingerprintManagerInteractor.enrollableFingerprints = 5
+
+      var canEnrollFingerprints: Boolean = false
+      val job = launch { underTest.isAddAnotherButtonVisible.collect { canEnrollFingerprints = it } }
+
+      advanceUntilIdle()
+      assertThat(canEnrollFingerprints).isTrue()
+      job.cancel()
+    }
+
+  @Test
+  fun testNextButtonSendsNextStep() =
+    testScope.runTest {
+      var step: FingerprintNavigationStep.UiStep? = null
+      val job = launch { navigationViewModel.navigateTo.collect { step = it } }
+
+      underTest.onNextButtonClicked()
+
+      runCurrent()
+
+      assertThat(step).isNull()
+      job.cancel()
+    }
+
+  @Test
+  fun testAddAnotherSendsAction() =
+    testScope.runTest {
+      var step: FingerprintNavigationStep.UiStep? = null
+      val job = launch { navigationViewModel.navigateTo.collect { step = it } }
+
+      underTest.onAddAnotherButtonClicked()
+
+      runCurrent()
+
+      assertThat(step).isInstanceOf(FingerprintNavigationStep.Enrollment::class.java)
+      job.cancel()
+    }
+}
diff --git a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
index 587e734..3b9ac9d 100644
--- a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
+++ b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
@@ -18,9 +18,13 @@
 
 import static com.android.settings.network.SubscriptionUtil.KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME;
 import static com.android.settings.network.SubscriptionUtil.SUB_ID;
+
 import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
@@ -30,6 +34,8 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.res.Resources;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -61,13 +67,15 @@
     private static final CharSequence CARRIER_2 = "carrier2";
 
     private Context mContext;
+    private NetworkCapabilities mNetworkCapabilities;
+
     @Mock
     private SubscriptionManager mSubMgr;
     @Mock
     private TelephonyManager mTelMgr;
     @Mock
     private Resources mResources;
-
+    @Mock private ConnectivityManager mConnectivityManager;
 
     @Before
     public void setUp() {
@@ -75,6 +83,7 @@
         mContext = spy(ApplicationProvider.getApplicationContext());
         when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubMgr);
         when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelMgr);
+        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
         when(mTelMgr.getUiccSlotsInfo()).thenReturn(null);
     }
 
@@ -588,4 +597,24 @@
 
         assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse();
     }
+
+    @Test
+    public void isConnectedToWifiOrDifferentSubId_hasWiFi_returnTrue() {
+        addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI);
+
+        assertTrue(SubscriptionUtil.isConnectedToWifiOrDifferentSubId(mContext, SUBID_1));
+    }
+
+    @Test
+    public void isConnectedToWifiOrDifferentSubId_noData_and_noWiFi_returnFalse() {
+        addNetworkTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH);
+
+        assertFalse(SubscriptionUtil.isConnectedToWifiOrDifferentSubId(mContext, SUBID_1));
+    }
+
+    private void addNetworkTransportType(int networkType) {
+        mNetworkCapabilities =
+                new NetworkCapabilities.Builder().addTransportType(networkType).build();
+        when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn(mNetworkCapabilities);
+    }
 }
diff --git a/tests/unit/src/com/android/settings/privatespace/HidePrivateSpaceSensitiveNotificationsControllerTest.java b/tests/unit/src/com/android/settings/privatespace/HidePrivateSpaceSensitiveNotificationsControllerTest.java
new file mode 100644
index 0000000..1430dfd
--- /dev/null
+++ b/tests/unit/src/com/android/settings/privatespace/HidePrivateSpaceSensitiveNotificationsControllerTest.java
@@ -0,0 +1,162 @@
+/*
+ * 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 com.android.settings.privatespace;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assume.assumeTrue;
+import static org.mockito.Mockito.spy;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+/**
+ * Tests for HidePrivateSpaceSensitiveNotificationsController.
+ * Run as {@code atest SettingsUnitTests:HidePrivateSpaceSensitiveNotificationsControllerTest}
+ */
+@RunWith(AndroidJUnit4.class)
+public class HidePrivateSpaceSensitiveNotificationsControllerTest {
+    @Rule
+    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+    private Context mContext;
+    private HidePrivateSpaceSensitiveNotificationsController
+            mHidePrivateSpaceSensitiveNotificationsController;
+    @Mock
+    private ContentResolver mContentResolver;
+    private int mOriginalDeviceSensitiveNotifValue;
+    private int mOriginalDeviceNotifValue;
+    private int mOriginalPsSensitiveNotifValue;
+    private int mPrivateProfileId;
+
+    @Before
+    public void setUp() {
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mContentResolver = mContext.getContentResolver();
+        assumeTrue(PrivateSpaceMaintainer.getInstance(mContext).doesPrivateSpaceExist());
+
+        mSetFlagsRule.enableFlags(
+                android.multiuser.Flags.FLAG_ENABLE_PS_SENSITIVE_NOTIFICATIONS_TOGGLE);
+        mSetFlagsRule.enableFlags(android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE);
+
+        mPrivateProfileId = PrivateSpaceMaintainer.getInstance(
+                mContext).getPrivateProfileHandle().getIdentifier();
+
+        mOriginalDeviceSensitiveNotifValue = Settings.Secure.getInt(mContentResolver,
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1);
+        mOriginalDeviceNotifValue = Settings.Secure.getInt(mContentResolver,
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
+        mOriginalPsSensitiveNotifValue = Settings.Secure.getIntForUser(mContentResolver,
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, mPrivateProfileId);
+
+        final String preferenceKey = "private_space_sensitive_notifications";
+        mHidePrivateSpaceSensitiveNotificationsController =
+                new HidePrivateSpaceSensitiveNotificationsController(mContext, preferenceKey);
+    }
+
+    @After
+    public void tearDown() {
+        Settings.Secure.putInt(mContentResolver,
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                mOriginalDeviceSensitiveNotifValue
+        );
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, mOriginalDeviceNotifValue);
+        Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                mOriginalPsSensitiveNotifValue, mPrivateProfileId);
+    }
+
+    /**
+     * Tests that the controller is unavailable if lockscreen sensitive notifications are disabled
+     * on the device.
+     */
+    @Test
+    public void getAvailabilityStatus_lockScreenPrivateNotificationsOff() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0);
+        assertThat(mHidePrivateSpaceSensitiveNotificationsController.getAvailabilityStatus())
+                .isEqualTo(DISABLED_DEPENDENT_SETTING);
+    }
+
+    /**
+     * Tests that the controller is unavailable if lockscreen notifications are disabled on the
+     * device.
+     */
+    @Test
+    public void getAvailabilityStatus_lockScreenNotificationsOff() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0);
+        assertThat(mHidePrivateSpaceSensitiveNotificationsController.getAvailabilityStatus())
+                .isEqualTo(DISABLED_DEPENDENT_SETTING);
+    }
+
+    /**
+     * Tests that the controller is available if lockscreen notifications and lockscreen private
+     * notifications are enabled on the device.
+     */
+    @Test
+    public void getAvailabilityStatus_returnAvailable() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1);
+        assertThat(mHidePrivateSpaceSensitiveNotificationsController.getAvailabilityStatus())
+                .isEqualTo(AVAILABLE);
+    }
+
+
+    /**
+     * Tests that toggle is not available if the flag for this feature and MVP flag are disabled.
+     */
+    @Test
+    public void getAvailabilityStatus_flagDisabled() {
+        mSetFlagsRule.disableFlags(
+                android.multiuser.Flags.FLAG_ENABLE_PS_SENSITIVE_NOTIFICATIONS_TOGGLE);
+        mSetFlagsRule.disableFlags(android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE);
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1);
+        assertThat(mHidePrivateSpaceSensitiveNotificationsController.getAvailabilityStatus())
+                .isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void testSetChecked() {
+        assertThat(mHidePrivateSpaceSensitiveNotificationsController.setChecked(true)).isTrue();
+        assertThat(mHidePrivateSpaceSensitiveNotificationsController.isChecked()).isEqualTo(true);
+        assertThat(mHidePrivateSpaceSensitiveNotificationsController.setChecked(false)).isTrue();
+        assertThat(mHidePrivateSpaceSensitiveNotificationsController.isChecked()).isEqualTo(false);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java b/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java
index 4bb5d43..8510b11 100644
--- a/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java
+++ b/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.privatespace;
 
+import static android.provider.Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS;
 import static android.provider.Settings.Secure.PRIVATE_SPACE_AUTO_LOCK;
 
 import static com.android.settings.privatespace.PrivateSpaceMaintainer.HIDE_PRIVATE_SPACE_ENTRY_POINT_DISABLED_VAL;
@@ -140,6 +141,24 @@
     }
 
     /**
+     * Tests that {@link PrivateSpaceMaintainer#createPrivateSpace()} sets the PS sensitive
+     * notifications to hidden by default.
+     */
+    @Test
+    public void createPrivateSpace_psDoesNotExist_setsDefaultPsSensitiveNotificationsValue() {
+        mSetFlagsRule.enableFlags(
+                Flags.FLAG_ALLOW_PRIVATE_PROFILE,
+                android.multiuser.Flags.FLAG_ENABLE_PS_SENSITIVE_NOTIFICATIONS_TOGGLE);
+        PrivateSpaceMaintainer privateSpaceMaintainer =
+                PrivateSpaceMaintainer.getInstance(mContext);
+        privateSpaceMaintainer.deletePrivateSpace();
+        privateSpaceMaintainer.createPrivateSpace();
+        assertThat(privateSpaceMaintainer.doesPrivateSpaceExist()).isTrue();
+        assertThat(getPsSensitiveNotificationsValue(privateSpaceMaintainer))
+                .isEqualTo(HidePrivateSpaceSensitiveNotificationsController.DISABLED);
+    }
+
+    /**
      * Tests that {@link PrivateSpaceMaintainer#createPrivateSpace()} when PS exist does not reset
      * hide PS Settings.
      */
@@ -287,4 +306,11 @@
                 0,
                 privateSpaceMaintainer.getPrivateProfileHandle().getIdentifier());
     }
+
+    private int getPsSensitiveNotificationsValue(PrivateSpaceMaintainer privateSpaceMaintainer) {
+        return Settings.Secure.getIntForUser(mContentResolver,
+                LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                HidePrivateSpaceSensitiveNotificationsController.ENABLED,
+                privateSpaceMaintainer.getPrivateProfileHandle().getIdentifier());
+    }
 }
diff --git a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
index 9e7948c..4f17a3a 100644
--- a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -27,6 +27,7 @@
 import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider;
 import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
 import com.android.settings.bluetooth.BluetoothFeatureProvider;
+import com.android.settings.connecteddevice.audiosharing.AudioSharingFeatureProvider;
 import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider;
 import com.android.settings.connecteddevice.stylus.StylusFeatureProvider;
 import com.android.settings.dashboard.DashboardFeatureProvider;
@@ -102,6 +103,7 @@
     public FastPairFeatureProvider mFastPairFeatureProvider;
     public PrivateSpaceLoginFeatureProvider mPrivateSpaceLoginFeatureProvider;
     public DisplayFeatureProvider mDisplayFeatureProvider;
+    public AudioSharingFeatureProvider mAudioSharingFeatureProvider;
 
     /** Call this in {@code @Before} method of the test class to use fake factory. */
     public static FakeFeatureFactory setupForTest() {
@@ -153,6 +155,7 @@
         mFastPairFeatureProvider = mock(FastPairFeatureProvider.class);
         mPrivateSpaceLoginFeatureProvider = mock(PrivateSpaceLoginFeatureProvider.class);
         mDisplayFeatureProvider = mock(DisplayFeatureProvider.class);
+        mAudioSharingFeatureProvider = mock(AudioSharingFeatureProvider.class);
     }
 
     @Override
@@ -340,4 +343,9 @@
     public DisplayFeatureProvider getDisplayFeatureProvider() {
         return mDisplayFeatureProvider;
     }
+
+    @Override
+    public AudioSharingFeatureProvider getAudioSharingFeatureProvider() {
+        return mAudioSharingFeatureProvider;
+    }
 }
